![](/img/trans.png)
[英]How do I delete a record in a table which has a primary key referenced in another table as foreign key?
[英]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
選項(您將需要刪除並重新創建約束),或者首先從子表中刪除引用記錄,然后才從父表中刪除記錄。
兩種選擇:
使用級聯刪除作為選項重新創建表。 此處有更多詳細信息: 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 } ] );
手動找到使用主鍵的子元素並刪除:
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.