Jeśli jesteś naprawdę pewien, że chcesz usunąć tabelę, nawet jeśli jest ona przywoływana w kluczach obcych, możesz to wymusić w ten sposób:
drop table state cascade constraints;
Ta składnia jest zdefiniowana w dokumentacji Oracle SQL .
Zwróć uwagę, że powoduje to usunięcie wszelkich relacji klucza obcego. Więc będziesz musiał je odtworzyć po odbudowaniu tabeli (i jej klucza podstawowego). Zwykle jest to w porządku, ponieważ najczęstszym przypadkiem użycia jest usuwanie i ponowne tworzenie schematów w środowiskach programistycznych lub CI.
Możemy użyć cascade constraints
aby nasze skrypty kompilacji były łatwiejsze w utrzymaniu. Istnieją dwie alternatywy:
- Wyraźnie usuń ograniczenia klucza obcego przed usunięciem tabel, za pomocą skryptu lub dynamicznego SQL.
- Uporządkuj instrukcje DROPTABLE tak, aby tabele zależne były przeskakiwane jako pierwsze wraz z ich nieznośnymi kluczami obcymi. Wystarczająco łatwe dla kilku stolików, bardziej bolesne z dużym schematem.