錯誤 違反完整性約束,已找到子記錄 的處理

2021-10-04 02:57:14 字數 746 閱讀 7659

select

*from wms_warehouse;

delete

from wms_warehouse where id=

1;

執行時出現警告框:違反完整性約束,已找到子記錄。

其實就是因為wms_warehouse表中的主鍵id是另外一些表的副鍵,您在沒有刪除子表記錄的情況下,刪除主表記錄,觸發了完整性約束錯誤,無法直接刪除。

其實此時plsql development已經將與此表有關的約束名稱告訴了你,當你建立約束時,oracle會給約束起乙個預設的名稱,預設的約束名就是那個非常長的字串,你只需要在user_constraints中查詢對應的表中對應的字段,就可以順藤摸瓜找到關聯的表。

select

*from user_constraints where constraint_name like

'%dd05a310df500%'

;

找到對應的表wms_worker和字段warehouse_id=1的資料,並刪除

select

*from wms_worker where warehouse_id=

1delete wms_worker where warehouse_id=

1;

這樣的約束可能存在數條,要耐心尋找,重複操作即可。

當與之約束的資料全部刪除時,一開始要刪除的資料自然就可以刪除了。

完整性約束

create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...

完整性約束

資料庫的完整性是指保護資料庫的有效性和正確性,防止資料庫中存在不符合語義的 不正確的資料。sql語言提供了相應的完整性約束機制,以確保將正確的資料儲存到資料庫中。完整性約束的型別 唯一約束 unique 用於表中的非主鍵字段,確保字段不會輸入重複的值,為其創造唯一索引 唯一鍵的值可以是null,但只...

完整性約束

約束 為什麼要使用約束?為了保障資料的合法性,完整性 分類 not null 非空約束,資料不能為空 例如 學生表的姓名字段 create table student id int,name char 10 not null,char 1 default woman unique 唯一的約束,該字段...