[英]update or delete on table “employee” violates foreign key constraint
我有一個employee
表,其中包含以下列:
fname (varchar), lname (varchar), id (numeric)
id
是主鍵。
有一個名為works_on
的表名,帶有列
projectname (varchar), id (numeric)
在此, id
是引用employee
表的外鍵。
當我嘗試從employee
表中刪除一行時,如下所示:
delete from employee where id = 1
我收到此錯誤:
表“員工”上的更新或刪除違反了表“ works_on”上的外鍵約束“ works_on_id_fkey”。
我是數據庫管理系統的新手。
有什么辦法嗎?
由於雇員是表works_on
的外鍵; 您之所以無法刪除員工ID 1,是因為在works_on
(或者其他表中員工是外鍵的表)上存在員工ID 1。 系統正在嘗試通過防止您刪除與works_on
關聯的雇員來維護數據庫的完整性。
說系統讓您刪除員工記錄。 現在,當您查看works_on
表時,員工1與什么相關? 您將無法再查找其他信息中的名字/姓氏。 因此系統在說:如果要刪除員工記錄,則必須首先刪除/更改外鍵與其他系統記錄的關聯; 確保其持續的完整性。 如果系統允許您執行此操作,則將其稱為“孤立”記錄。 子級關聯的父級記錄不再存在。
要解決的幾個選項是:
ON DELETE CASCADE ON UPDATE CASCADE,
如果刪除父記錄,它將自動刪除子記錄。 (在啟用前,請務必謹慎並考慮這對系統的影響) 示例: 文檔 您不能通過這種方式刪除行。 因為它具有約束ID(works_on_id_fkey)。 如果要刪除,則必須從中刪除約束。
alter table employee drop foreign key works_on_id_fkey
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.