Wenn Sie wirklich sicher sind, dass Sie die Tabelle löschen möchten, obwohl sie in Fremdschlüsseln referenziert wird, können Sie dies wie folgt erzwingen:
drop table state cascade constraints;
Diese Syntax ist in der Oracle SQL-Referenz .
Beachten Sie, dass dadurch alle Fremdschlüsselbeziehungen gelöscht werden. Sie müssen sie also neu erstellen, nachdem Sie die Tabelle (und ihren Primärschlüssel) neu erstellt haben. Normalerweise ist dies in Ordnung, da der häufigste Anwendungsfall darin besteht, Schemas in Entwicklungs- oder CI-Umgebungen zu löschen und neu zu erstellen.
Wir können cascade constraints
verwenden um unsere Build-Skripte wartungsfreundlicher zu machen. Es gibt zwei Alternativen:
- Löschen Sie explizit die Fremdschlüsseleinschränkungen, bevor Sie die Tabellen löschen, entweder mit einem Skript oder mit dynamischem SQL.
- Ordnen Sie die DROPTABLE-Anweisungen so an, dass abhängige Tabellen zusammen mit ihren lästigen Fremdschlüsseln zuerst gezapped werden. Einfach genug für eine Handvoll Tabellen, schmerzhafter bei einem großen Schema.