Sql Server查詢,關閉外來鍵約束的sql

2021-09-13 16:04:31 字數 1055 閱讀 4840

環境:sql server2008

情況:有時候,刪除表資料(delete方式),會受到外來鍵約束,導致刪除失敗

注意:該方式,僅對delete能用,truncate無效(truncate刪除資料,還是會受到外來鍵影響,除非刪除外來鍵,然後刪除資料,再重新建立外來鍵約束,網上有人說可以,但我測試過,依然提示外來鍵約束問題)

解決辦法:關閉檢查約束 → 刪除資料 → 約束開啟

1)查詢出,關閉外來鍵約束的sql

select 

'alter table ' + o.name + ' nocheck constraint [' + f.name + '];' as command

from

sys.foreign_keys f inner join sys.all_objects o on f.parent_object_id = o.object_id

where o.type = 'u' and f.type = 'f';

2)查詢出,開啟外來鍵約束的sql

select 

'alter table ' + o.name + ' check constraint [' + f.name + '];' as command

from

sys.foreign_keys f inner join sys.all_objects o on f.parent_object_id = o.object_id

where o.type = 'u' and f.type = 'f';

參考:

sql server有主外來鍵關係時新增、刪除資料

sqlserver清空(truncate)被外來鍵引用的資料表

sql server 2008 r2——truncate table 無法截斷表 該錶正由 foreign key 約束引用(該文章,也是說了truncate不能刪除具有外來鍵約束表的資料)

mysql 關閉外來鍵

在mysql中刪除一張表或一條資料的時候,出現 err 1451 cannot delete or update a parent row a foreign key constraint fails 這是因為mysql中設定了foreign key關聯,造成無法更新或刪除資料。可以通過設定fore...

SQL Server查詢表的外來鍵關係

有時候想清空資料庫中的資料,但是要保留表結構,就需要用truncate或delete語句去刪除各個表中的資料。執行刪除語句的時候,經常會出現以下錯誤 無法截斷表 因為該錶正由 foreign key 約束引用。此時,我們需要去核實 表究竟被哪些表引用了。當表數量較多且引用關係複雜時,手動核實引用關係...

SQL Server外來鍵約束

sql server中主外來鍵的定義 1.create table dept dept no int primary key,dept name nvarchar 50 not null insert into dept values 10,it 20,finance 30,engneer crea...