Czy mam rację rozumiejąc, że STWÓRZ LUB ZAMIEŃ zasadniczo oznacza „jeśli obiekt istnieje, upuść go, a następnie utwórz w dowolny sposób?”
Jeśli tak, co robię źle? To działa:
CREATE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
A to nie jest (ORA-00922: brak lub nieprawidłowa opcja):
CREATE OR REPLACE TABLE foo (id NUMBER,
title VARCHAR2(4000) DEFAULT 'Default Title')
Robię coś głupiego? Wydaje się, że nie mogę znaleźć dużej dokumentacji na temat tej składni.
CREATE OR REPLACE
działa również dla synonimów i wyzwalaczyPoniższy skrypt powinien załatwić sprawę na Oracle:
źródło
Nie działa z tabelami, tylko funkcjami itp.
Oto strona z kilkoma przykładami .
źródło
Przydatna procedura dla baz danych Oracle bez użycia wyjątków (w pewnych okolicznościach musisz zamienić user_tables na dba_tables i / lub ograniczyć przestrzeń tabel w zapytaniu):
źródło
źródło
Jeśli robisz w kodzie, najpierw sprawdź tabelę w bazie danych za pomocą zapytania SELECT nazwa_tabeli FROM user_tables WHERE nazwa_tabeli = 'XYZ'
jeśli znaleziono rekord, obetnij tabelę, w przeciwnym razie utwórz tabelę
Działa jak Utwórz lub Zastąp.
źródło
Możesz użyć CORT ( www.softcraftltd.co.uk/cort ). To narzędzie umożliwia TWORZENIE LUB WYMIENIANIE tabeli w Oracle. To wygląda jak:
Zachowuje dane.
źródło
Więc używam tego i działa bardzo dobrze: - działa bardziej jak DROP, JEŚLI ISTNIEJE, ale wykonuje swoją pracę
Mam nadzieję, że to pomoże. Również odniesienie: PLS-00103 Błąd w PL / SQL Developer
źródło
„Utwórz lub zamień tabelę” nie jest możliwe. Jak powiedzieli inni, możesz napisać procedurę i / lub użyć natychmiastowego rozpoczęcia wykonywania (...). Ponieważ nie widzę odpowiedzi na temat tego, jak (ponownie) utworzyć tabelę, jako odpowiedź wstawiłem skrypt.
PS: zgodnie z tym, o czym wspomniał jeffrey-kemp: ten poniżej skrypt NIE zapisze danych, które są już obecne w tabeli, którą zamierzasz upuścić. Ze względu na ryzyko utraty danych w naszej firmie można zmieniać tylko istniejące tabele w środowisku produkcyjnym, a nie wolno usuwać tabel. Korzystając z wyciągu z tabeli drop table, prędzej czy później dostaniesz policję firmy stojącą przy Twoim biurku.
źródło
Zrobiłbym coś takiego
źródło
Jeśli to jest dla MS SQL .. Poniższy kod będzie zawsze działał bez względu na to, czy tabela już istnieje, czy nie.
źródło