Wenn Sie eine Datenbank mit vielen Transaktionen und einer gewissen Vertraulichkeit pflegen müssen, können Sie ein Entwicklerteam haben, das Code erstellt, ohne zu wissen, wie die Datenbank ist.
Hierfür werden gespeicherte Prozeduren verwendet
Beispiel
Wir erstellen eine Datenbank für eine Immobilie und eine Tabelle für eine Immobilie (wir verwenden nur wenige Felder, um keinen umfangreichen Code zu generieren und das kann verwirren)
TABELLE ERSTELLEN, WENN ES KEINE "Immobilie" GIBT ( `id` int (11) NICHT NULL AUTO_INCREMENT, `typemovable` varchar (100) DEFAULT '0', `price` decimal (10,2) DEFAULT '0.00', `description` text, PRIMARY KEY (`id`) ) ENGINE = MyISAM AUTO_INCREMENT = 195 DEFAULT CHARSET = latin1;
Ich erstelle eine neue gespeicherte Prozedur, um Immobilien in die Datenbank einzufügen. Wenn ich es definiere, weise ich ihm als Parameter die Daten zu, die er akzeptieren muss, in diesem Fall Eigenschaft, Preis und Beschreibung, jedes mit seinem mysql-Format, schreibe ich auch die INSERT-Aktion
Dann erstellen wir ein HTML-Dateneingabeformular, um die Werte der neuen Eigenschaften einzugeben.
[color = # 000000] Hier senden wir die Informationen an eine Datei save.php, die die gespeicherte Prozedur aufruft und die Daten aufzeichnet. [/ color]
[color = # 000000] Dazu müssen wir zuvor den Code erstellt haben, um eine Verbindung zur Datenbank herzustellen. [/ color]
[color = # 000000] Erstelle eine Datei config.php [/ color]
<? php
// Verbindungskette zur Datenbank
$ link = mysql_connect (‘localhost’, ‘user’, ‘password’);
// Verbindung zur Datenbank
if (! $ link) {
die (‘Nicht verbunden:’. mysql_error ());
}
// Datenbank auswählen
$ db = ‘dbReal Estate’;
if (! mysql_select_db ($ db)) {
die (‘Error:’. mysql_error ());
}?>
Im Bild sehen wir, wie die gespeicherte Prozedur von der SQL-Anweisung CALL aufgerufen wird
CALL neues Haus (parametro1, parametro2, …)
Wir erstellen eine weitere Prozedur, die in der Datenbank gespeichert ist, um sie nach Eigenschaftstyp abzurufen.
CREATE-Prozedur listarinmueble (Typ varchar (150))
[Einzug = 1] SELECT * FROM Immobilien WHERE Eigenschaft LIKE Typ
Zusätzlich zur Verwendung in PHP können wir die Abfrage von jeder Software ausführen, die in diesem Fall SQL und MySQL unterstützt.
Wir testen die gespeicherte Prozedur listmobile nach Typ in diesem Fall mit der Verwaltungssoftware mysql Heidisql
CALL listarinmueble (‘Haus’)
Das Ergebnis ist unten zu sehen, da es nach Eigenschaftstyp gefiltert wurde.
Wir können auch eine gespeicherte Prozedur zum Löschen von Daten erstellen, in der wir als Parameter die ID senden
[color = # 000000] CREATE procedure removeinfurniture (idinmueble INT) [/ color]
[color = # 000000] SELECT * FROM Immobilien WHERE id = idinmueble [/ color]
Dann rufen wir die gespeicherte Prozedur wie folgt auf
Anruf entfernbar (172)
Das Interessante daran ist, dass wir als Datenbankadministratoren eines sehr komplexen Systems den Programmierern nur die Liste der Prozeduren und nicht die Struktur der Datenbank zur Verfügung stellen könnten, was eine größere Vertraulichkeit gewährleistet.
Sie können mit den Daten interagieren, aber nicht mit der Struktur, auch wenn sie nur lesen, aber nicht ändern können. Dies wäre ein Thema für große Datenbanksysteme, bei denen viele Personen interagieren, wenn Sicherheit und Vertraulichkeit wichtig sind.
Die bekanntesten Datenbanken, die gespeicherte Prozeduren unterstützen, sind mysql, firebird, ms sql server, oracle, db2 postgresql und sybase.