DROP TABLE-Befehl: Änderungen am Verhalten von CASCADE für hybride Tabellen (ausstehend)¶
Achtung
Diese Verhaltensänderung ist in Bundle 2025_03 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Wenn dieses Bundle zur Verhaltensänderung aktiviert ist, ist die Standardeinstellung des Parameters CASCADE/RESTRICT für die Hybridtabellen und unterschiedlich. Diese Änderung gilt nicht für Standardtabellen.
- Vor der Änderung:
Wenn Sie eine Hybridtabelle löschen, ohne RESTRICT oder CASCADE anzugeben, und die Hybridtabelle eine Primärschlüssel/Fremdschlüssel- oder Unique-Key/Fremdschlüssel-Beziehung mit einer anderen Tabelle hat, ist der Befehl DROP TABLE erfolgreich.
Das Standardverhalten ist CASCADE.
CREATE OR REPLACE HYBRID TABLE ht1( col1 NUMBER(38,0) NOT NULL, col2 NUMBER(38,0) NOT NULL, CONSTRAINT pkey_ht1 PRIMARY KEY (col1, col2)); CREATE OR REPLACE HYBRID TABLE ht2( cola NUMBER(38,0) NOT NULL, colb NUMBER(38,0) NOT NULL, colc NUMBER(38,0) NOT NULL, CONSTRAINT pkey_ht2 PRIMARY KEY (cola), CONSTRAINT fkey_ht1 FOREIGN KEY (colb, colc) REFERENCES ht1(col1,col2)); DROP TABLE ht1;
Der Befehl DROP TABLE wird ohne Fehler ausgeführt.
- Nach der Änderung:
Wenn Sie eine Hybridtabelle löschen, ohne die Option RESTRICT oder CASCADE anzugeben, und die Hybridtabelle eine Primärschlüssel/Fremdschlüssel- oder Unique-Key/Fremdschlüssel-Beziehung mit einer anderen Tabelle hat, schlägt der Befehl DROP TABLE mit einem Fehler fehl.
Das Standardverhalten ist RESTRICT.
Beispiel:
DROP TABLE ht1;
SQL compilation error: Cannot drop the table because of dependencies
Der Befehl DROP TABLE schlägt in diesem Fall fehl. Falls erforderlich, können Sie das Standardverhalten außer Kraft setzen, indem Sie CASCADE im Befehl DROP TABLE angeben.
DROP TABLE ht1 CASCADE;
Alternativ könnten Sie in diesem Fall zuerst die abhängige Tabelle
ht2
und dann die Tabelleht1
löschen.
Ref.: 1741