DROP TABLE 命令:混合表 CASCADE 行为的变更(待定)¶
启用此行为变更捆绑包后,混合表 的 CASCADE/RESTRICT 参数的默认设置会有所不同。此变更不适用于标准表。
- 变更前:
当您在未指定 RESTRICT 或 CASCADE 的情况下删除混合表,并且该混合表与其他表具有主键/外键或唯一键/外键关系时,DROP TABLE 命令将成功。
默认行为是 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;
DROP TABLE 命令成功运行,没有任何错误。
- 变更后:
当您在未指定 RESTRICT 或 CASCADE 选项的情况下删除混合表,并且该混合表与其他表具有主键/外键或唯一键/外键关系时,DROP TABLE 命令将失败,并出现错误。
默认行为是 RESTRICT。
例如:
DROP TABLE ht1;
SQL compilation error: Cannot drop the table because of dependencies
在这种情况下,DROP TABLE 命令会失败。如有必要,您可以通过在 DROP TABLE 命令中指定 CASCADE 来替换默认行为。
DROP TABLE ht1 CASCADE;
或者,在这种情况下,您可以先删除依赖表
ht2
,然后再删除表ht1
。
参考:1741