亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在SQLServer中使用級聯刪除?

如何在SQLServer中使用級聯刪除?

哆啦的時光機 2019-06-18 11:01:47
如何在SQLServer中使用級聯刪除?我有兩個表:T1和T2,它們是現有的有數據的表。T1和T2之間有一對多的關系。如何在SQLServer中更改表定義以執行級聯刪除,當從T1刪除記錄時,T2中的所有關聯記錄也被刪除。他們之間存在著外來的限制。我不想刪除表或創建一個觸發器來執行T2的刪除。例如,當我刪除一個員工時,所有的考核記錄也應該會消失。T1-雇員,Employee ID       Name StatusT2-業績審查,Employee ID - 2009 Review Employee ID - 2010 Review
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

你需要,

  • 刪除現有的外鍵約束,
  • 添加一個新的

    ON DELETE CASCADE

    設置已啟用。

類似于:

ALTER TABLE dbo.T2   DROP CONSTRAINT FK_T1_T2   -- or whatever it's calledALTER TABLE dbo.T2   ADD CONSTRAINT FK_T1_T2_Cascade   
FOREIGN KEY (EmployeeID) REFERENCES dbo.T1(EmployeeID) ON DELETE CASCADE


查看完整回答
反對 回復 2019-06-18
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

若要在SQLServerManagementStudio中的現有外鍵中添加“級聯刪除”,請執行以下操作:

首先,選擇您的外鍵,然后打開它的“拖放并創建到.”在一個新的查詢窗口中。


然后,添加ON DELETE CASCADEADD CONSTRAINT指揮:

然后點擊“執行”按鈕來運行這個查詢

順便說一句,要獲取您的ForeignKeys的列表,并查看哪些已打開“級聯刪除”,您可以運行以下腳本:

SELECT 
   OBJECT_NAME(f.parent_object_id) AS 'Table name',
   COL_NAME(fc.parent_object_id,fc.parent_column_id) AS 'Field name',
   delete_referential_action_desc AS 'On Delete'FROM sys.foreign_keys AS f,
     sys.foreign_key_columns AS fc,
     sys.tables t 
WHERE f.OBJECT_ID = fc.constraint_object_idAND t.OBJECT_ID = fc.referenced_object_idORDER BY 1

如果你發現你不能DROP由于外鍵約束而產生的特定表,但是您無法確定是哪個FK導致了問題,那么您可以運行以下命令:

sp_help 'TableName'

本文中的SQL列出了引用特定表的所有FKS。

希望這一切都有幫助。

為長手指道歉。我只是想說明一下。


查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 1634 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號