DROP TABLE 命令:混合表 CASCADE 行为的变更(待定)

注意

此行为变更在 2025_03 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

启用此行为变更捆绑包后,混合表 的 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;
Copy

DROP TABLE 命令成功运行,没有任何错误。

变更后:

当您在未指定 RESTRICT 或 CASCADE 选项的情况下删除混合表,并且该混合表与其他表具有主键/外键或唯一键/外键关系时,DROP TABLE 命令将失败,并出现错误。

默认行为是 RESTRICT。

例如:

DROP TABLE ht1;
Copy
SQL compilation error:
Cannot drop the table because of dependencies

在这种情况下,DROP TABLE 命令会失败。如有必要,您可以通过在 DROP TABLE 命令中指定 CASCADE 来替换默认行为。

DROP TABLE ht1 CASCADE;
Copy

或者,在这种情况下,您可以先删除依赖表 ht2,然后再删除表 ht1

参考:1741

语言: 中文