暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ON DELETE CASCADE 选项 — GBASE南大通用

原创 三金先生 2023-12-13
663

 DELETE  MERGE 语句删除父表中的行时,子表中相应的行也被删除,则使用 ON DELETE CASCADE 选项。 

此处,parent table 是定义启用外键约束的 REFERENCING 子句指定的表 child table 是定义启 用外键约束的表。如果您不指定级联删除,则在某个表被其它表用主键外键关系引用的情况下,数 据库服务器的缺省行为防止 DELETE  MERGE 语句删除该表中的数据。 

如果您指定此选项,则当删除父表中的行时,数据库服务器还删除任何与子表的该行(外键)关联 的行。ON DELETE CASCADE 选项的运行您减少执行删除操作所需的 SQL 语句的数量。 

例如:在 stores_demo 数据库中,stock 表将 stock_num 列包含为主键。catalog 表引用 stock_num 列作为外键。以下 ALTER TABLE 语句删除现有外键约束(没有级联删除),并添加指 定级联删除的新约束:

 ALTER TABLE catalog DROP CONSTRAINT aa; 

ALTER TABLE catalog ADD CONSTRAINT

 (FOREIGN KEY (stock_num, manu_code) REFERENCES stock

 ON DELETE CASCADE CONSTRAINT ab); 

如果在子表上指定了级联删除,则除了从 stock 表中删除 stock 项以外,还删除级联到与 stock_num 外键相关联的目录表。此级联删除仅当 stock_num 没有订购时有效;否则,items  中的约束将不允许级联删除。有关更多信息,请参阅 表有级联删除时对 DELETE 的限制  

如果表带有 DELETE 触发事件的触发器,则您不能在该表上定义级联删除引用约束。当您试图将 指定 ON DELETE CASCADE 的引用约束添加到有删除触发器的表时,接收到一条错误。 

TRUNCATE 语句无法从子表进行级联删除。TRUNCATE 语句的目标表不能被在另一个定义启用 外键约束表引用(除非子表没有行)。 

有关从具有级联删除的表中删除行时的语法限制和锁定音响的信息,请参阅级联删除表时的注意事 项。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论