SQL - 删除Cascade用于?

时间:2013-08-24 02:43:09

标签: sql

我正在学习SQL,而且我仍然坚持其中一个复习问题而且在教科书中找不到答案。当你'删除级联'

与'一起'使用了什么?

  • 一个。它与主键约束一起使用
  • 湾它与唯一约束一起使用
  • ℃。它与引用约束一起使用
  • d。它与类型约束一起使用

我想说主键,因为它会在级联时识别正确的元组?我是对还是错,我只是不知道哪一个是对的。

感谢。

2 个答案:

答案 0 :(得分:1)

它与参考约束一起使用。

更多关于Referential CONSTRAINT

答案 1 :(得分:1)

删除所有具有该记录的FK的记录。

See Fiddle


CREATE TABLE foo (
   id  serial, 
   num int, 
   PRIMARY KEY (id)
);
INSERT INTO foo(num) VALUES(1),(2),(3),(4);

CREATE TABLE bar ( 
   foo_id bigint unsigned,
   FOREIGN KEY (foo_id) REFERENCES foo (id) ON DELETE CASCADE
);
INSERT INTO bar(foo_id) VALUES (1),(2),(3),(4);

DELETE FROM bar WHERE foo_id = 3;  -- notice 3 is only removed from bar
DELETE FROM foo WHERE id = 2;      -- notice 2 is removed from both foo and bar

当删除foo中的记录时,任何引用该记录的键并指定delete cascade的约束也将自动删除。如果没有该规范,当删除foo中的记录时,如果在事务结束时仍存在任何外部依赖关系,数据库将发送错误消息。