SQL-Delete级联与一起使用?

SQL-Delete级联与一起使用?,sql,Sql,我正在学习SQL,我被一个复习问题困住了,在课本上找不到答案。当您“删除级联”时 它与什么一起“使用” a。它与主键约束一起使用 b。它与唯一约束一起使用 c。它与引用约束一起使用 d。它与类型约束一起使用 我想说主键,因为它将在级联时识别正确的元组?我是对的/错的吗?我只是不知道哪一个是对的 谢谢 它与引用约束一起使用 有关的详细信息它将删除对该记录具有FK的所有记录 删除foo中的记录时,引用该记录的键并指定了delete cascade的任何约束也将自动删除。如果没有该规范,当删除

我正在学习SQL,我被一个复习问题困住了,在课本上找不到答案。当您“删除级联”时

它与什么一起“使用”

  • a。它与主键约束一起使用
  • b。它与唯一约束一起使用
  • c。它与引用约束一起使用
  • d。它与类型约束一起使用
我想说主键,因为它将在级联时识别正确的元组?我是对的/错的吗?我只是不知道哪一个是对的


谢谢

它与引用约束一起使用


有关

的详细信息它将删除对该记录具有FK的所有记录



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

删除级联
用于
外键
列,因此,
C
在这里是正确的。这样考虑一下:对于级联的东西,这意味着它影响多个元素/节点/项目/任何东西<删除级联上的code>表示删除操作会导致级联操作到另一个元素/节点/项/任何内容上。因此正确答案是
C
,引用约束(外键)。一行被删除,其他表(或同一表)中通过FK约束的相关行也被删除,因为它们之间的公共元素不再存在。投票结果被否决,因为您的原始答案暗示OP假设DELETE CASCADE与PKs一起使用是正确的。级联删除与FK一起使用,FK是引用约束的同义词。你仍然含糊不清地暗示OP的猜测是正确的。@MichaelBerkowski我明白了,尽管指定它只发生在
FKs
——我将删除
右边的
,因为它模棱两可且具有误导性;谢谢
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