Habe ich Recht, wenn ich verstehe, dass CREATE OR REPLACE im Grunde bedeutet: "Wenn das Objekt existiert, lassen Sie es fallen und erstellen Sie es so oder so?"
Wenn ja, was mache ich falsch? Das funktioniert:
CREATE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Und das nicht (ORA-00922: fehlende oder ungültige Option):
CREATE OR REPLACE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Mache ich etwas dummes Ich scheine nicht in der Lage zu sein, viel Dokumentation über diese Syntax zu finden.
CREATE OR REPLACE
funktioniert auch für Synonyme und TriggerDas folgende Skript sollte den Trick unter Oracle ausführen:
quelle
Funktioniert nicht mit Tabellen, nur Funktionen usw.
Hier ist eine Seite mit einigen Beispielen .
quelle
Eine nützliche Prozedur für Oracle-Datenbanken ohne Verwendung von Ausnahmen (unter Umständen müssen Sie user_tables durch dba_tables ersetzen und / oder den Tablespace in der Abfrage einschränken):
quelle
quelle
Wenn Sie im Code arbeiten, suchen Sie zuerst mit der Abfrage SELECT table_name FROM user_tables WHERE table_name = 'XYZ' nach Tabellen in der Datenbank.
Wenn ein Datensatz gefunden wurde, kürzen Sie die Tabelle. Andernfalls erstellen Sie eine Tabelle
Arbeiten Sie wie Erstellen oder Ersetzen.
quelle
Sie können CORT ( www.softcraftltd.co.uk/cort ) verwenden. Mit diesem Tool können Sie Tabellen in Oracle erstellen oder ersetzen. Es sieht aus wie:
Es bewahrt Daten.
quelle
Also habe ich das benutzt und es hat sehr gut funktioniert: - Es funktioniert eher wie ein DROP, WENN EXISTIERT, aber die Arbeit erledigt
Hoffe das hilft auch Verweis: PLS-00103 Fehler in PL / SQL Developer
quelle
'Tabelle erstellen oder ersetzen' ist nicht möglich. Wie bereits erwähnt, können Sie eine Prozedur schreiben und / oder begin execute sofort verwenden (...). Da ich keine Antwort zum (erneuten) Erstellen der Tabelle sehe, habe ich ein Skript als Antwort eingefügt.
PS: In Übereinstimmung mit dem, was Jeffrey-Kemp erwähnt hat: Dieses Skript speichert KEINE Daten, die bereits in der Tabelle vorhanden sind, die Sie löschen möchten. Aufgrund des Risikos des Datenverlusts dürfen in unserem Unternehmen nur vorhandene Tabellen in der Produktionsumgebung geändert und keine Tabellen gelöscht werden. Wenn Sie die Drop-Table-Anweisung verwenden, wird früher oder später die Firmenpolizei an Ihrem Schreibtisch stehen.
quelle
Ich würde so etwas tun
quelle
Wenn dies für MS SQL ist. Der folgende Code wird immer ausgeführt, unabhängig davon, ob die Tabelle bereits vorhanden ist oder nicht.
quelle