我正在学习SQL,而且我仍然坚持其中一个复习问题而且在教科书中找不到答案。当你'删除级联'
时与'一起'使用了什么?
我想说主键,因为它会在级联时识别正确的元组?我是对还是错,我只是不知道哪一个是对的。
感谢。
答案 0 :(得分:1)
它与参考约束一起使用。
答案 1 :(得分:1)
删除所有具有该记录的FK的记录。
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
中的记录时,如果在事务结束时仍存在任何外部依赖关系,数据库将发送错误消息。