DDL (Data Definition Language) ist eine Datendefinitionssprache, die zur Definition der Struktur einer Datenbank verwendet wird (Erstellen, Ändern, Löschen von Tabellen, Schemata, Indizes usw.):
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Data Manipulation Language) ist eine Datamanipulationssprache, die mit dem Inhalt von Tabellen arbeitet (Hinzufügen, Ändern, Löschen, Abfragen von Zeilen):
INSERT, UPDATE, DELETE, SELECT.Zum Beispiel können verschiedene Benutzer unterschiedliche Rechte nur für DML oder nur für DDL haben:
-- DDL: Tabelle erstellen CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: Daten einfügen INSERT INTO users (id, name) VALUES (1, 'Ivan');
"Kann man einen DDL-Befehl (z.B. DROP TABLE) zurücksetzen, wenn er innerhalb einer expliziten Transaktion ausgeführt wurde?"
Die meisten DBMS (z.B. PostgreSQL, Oracle) unterstützen Transaktionen für DDL, aber viele erlauben es nicht, DDL-Befehle zurückzusetzen, selbst wenn sie explizit in eine Transaktion gehüllt sind. In MySQL werden DDL-Befehle immer sofort festgeschrieben.
BEGIN; DROP TABLE employees; ROLLBACK;
In den meisten Fällen wird die Tabelle dauerhaft entfernt, selbst bei einem Rollback.
Geschichte
Der Verlust einer Tabelle in der Entwicklungsumgebung nach der versehentlichen Ausführung von DROP TABLE — der Befehl ist unwiderruflich, trotz Rollback der Transaktion.
Geschichte
Die Organisation gab administrativen Zugriff auf ein Projekt, das aufgrund eines Fehlers Massenänderungen der Datenbankschemata über ALTER vornahm, was zu langen Ausfallzeiten des Dienstes und Verlust von Bestellungen führte.
Geschichte
Indem den Neulingen die DDL-Rechte verweigert wurden, vergaß das Team, dass die Verfahren zum Bereitstellen von Migrationen DDL-Zugriff benötigen — das Release verzögerte sich nach stundenlangen Ermittlungen und der dringenden Erhöhung der Rollen.