1

私は SQL を学んでいますが、復習問題の 1 つに行き詰まっており、テキストブックで答えを見つけることができません。「カスケードを削除」するとき

それは何と「使用」されていますか?

  • a. 主キー制約と一緒に使用されます
  • b. 一意の制約と一緒に使用されます
  • c. 参照制約と一緒に使用されます
  • d. 型制約と一緒に使用されます

カスケード時に正しいタプルを識別するため、主キーと言いたいですか?私は正しい/間違っていますか、どちらが正しいかわかりません。

ありがとう。

4

2 に答える 2

1

参照制約と一緒に使用されます。

参照制約の詳細

于 2013-08-24T02:51:06.873 に答える
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が削除されたときに、トランザクションの最後に外部依存関係がまだ存在する場合、データベースはエラー メッセージを送信します。

于 2013-08-24T02:51:10.130 に答える