簡體   English   中英

如何從表中刪除將主鍵用作其他表中的外鍵的行?

[英]How do I delete a row from the table that has the primary key used as foreign key in my other table?

我在SQL Server 2008數據庫中的兩個表之間創建了外鍵關系。 當我嘗試從包含主鍵的表中刪除一行時,出現錯誤。 如何從表中刪除將主鍵用作其他表中的外鍵的行?

這是具有外鍵約束的要點:您不能從一個表中刪除具有從另一表引用它們的記錄的記錄。

您可以在約束本身上使用on delete cascade選項(您將需要刪除並重新創建約束),或者首先從子表中刪除引用記錄,然后才從父表中刪除記錄。

兩種選擇:

  1. 使用級聯刪除作為選項重新創建表。 此處有更多詳細信息: http : //www.techonthenet.com/sql_server/foreign_keys/foreign_delete.php

    語法:

     CREATE TABLE **child_table** ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... CONSTRAINT fk_name FOREIGN KEY (child_col1, child_col2, ... child_col_n) REFERENCES parent_table (parent_col1, parent_col2, ... parent_col_n) ON DELETE CASCADE [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] ); 
  2. 手動找到使用主鍵的子元素並刪除:

     DELETE FROM table_name_with_foreign_key WHERE some_column=some_value; 

    然后使用主鍵返回主表並刪除該行:

     DELETE FROM table_name WHERE some_column = some_value; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM