if [not] exists DDL Syntax (Update)
if [not] exists DDL Syntax - jetzt auch in 19c verfügbar
Vor einiger Zeit haben wir in diesem Blog ein neues Feature der 23ai Datenbank (damals noch mit dem Namen “23c”) vorgestellt, das es für klassische Entwickler einfacher macht, Schemaänderungen per Skript durchzuführen bzw. die dabei entstehenden Logfehlermeldungen zu reduzieren. Den detaillierten Blog Post zur if [not]exists Syntax findet man unter “Oracle Datenbank 23c - if [not] exists DDL Syntax”.
Die gute Nachricht: Diese Funktionalität wurde von Oracle mit dem Release Update 19.28 (verfügbar seit Juli 2025) nun auch in der 19c Datenbank verfügbar gemacht, wie man in der 19c Dokumentation nachlesen kann.
Um diese nutzen zu können, muss lediglich das Release Update 19.28 eingespielt werden. Der compatible-Parameter muss nicht auf 19.28 gesetzt werden, sondern kann auf 19.0.0 stehen bleiben. Auch sonst sind keine Änderungen/Anpassungen an der Datenbankkonfiguration notwendig.
Wie bei 23ai wird die Tabelle jso_test zunächst mit einer Spalte mit einer Länge von 10 erstellt. Der zweite – neue – Befehl zum Erstellen der Tabelle würde die Tabelle mit einer Spalte mit einer Länge von 20 erstellen. Da „if not exists“ angegeben ist, wird kein Fehler ausgegeben, aber die Länge der Spalte beträgt weiterhin 10. Wie bisher muss ein Befehl zum Ändern der Tabelle hinzugefügt werden, um diese Spalte auf eine Länge von 20 Zeichen zu ändern.
Der dritte Versuch ist wie gleich wie bis 19.27, als die if (not) exists-Klausel noch nicht existierte. Es wird ein Fehler ausgegeben.
Ab sofort kann also begonnen werden, Datenbankskripte so zu ändern, dass sie die if [not] exits-Klausel verwenden, aber, da keine Fehlermeldung mehr ausgegeben wird, vergessen Sie bitte nicht, die Spalten mit einem ALTER Befehl anzupassen, um Schemaänderungen widerzuspiegeln.
Neben dem Create Statement werden wie bei der 23ai Datenbank auch Alter und Drop-Befehle unterstützt. Die Syntax entnehmen Sie bitte der Dokumentation (siehe obenstehender Link).
Es gibt also einen Grund weniger auf die 23ai on-premises Version der Oracle Datenbank zu warten.
Kommentare
Keine Kommentare