MSSQL主從表級聯刪除三種方法
MSSQL主從表級聯刪除三種方法
在ERP系統設計或者其他運用系統經常遇到主從表的問題。
方法一:程序中處理
採用事務處理刪除,代碼省略。
方法二:觸發器處理
示例
[sql]
-- =============================================
-- Author: <David Gong>
-- Create date: <2012-06-27>
-- Description: <級聯刪除報價單>
-- =============================================
ALTER TRIGGER [dbo].[RemoveZMQuotation]
ON [dbo].[ZMQuotation]
INSTEAD OF DELETE
AS www.2cto.com
BEGIN
SET NOCOUNT ON;
/*定義觸發器使用的變量*/
declare @ID as int
declare @sCount Int
declare @SerialNo as nvarchar(20)
/* 把傳送的需要刪除的id鍵值賦值給@ID變量 */
/* 開始事務 */
BEGIN TRAN RemoveZMQuo
set @ID=(select id from deleted)
set @SerialNo=(select SerialNo from deleted)
/* 保存刪除前保存點,防止出錯 */
Save Tran My_Save1
/* 首先判斷單身ZMQuotationLine中是否有所屬內容 */
Set @sCount = (Select Count(*) From ZMQuotationLine Where ZMQuotationLine.Pid = @ID)
If @sCount > 0
begin
delete ZMQuotation where id=@ID
delete ZMQuotationLine where Pid=@ID
end
else
begin
delete ZMQuotation where id=@ID
end www.2cto.com
If @@Error = 0
begin
Commit Transaction
end
Else
Begin
Rollback Transaction My_Save1
Raiserror('刪除出現錯誤,記錄:%s及其所屬內容沒有被刪除。',16,1,@SerialNo)
End
SET NOCOUNT OFF
END
三:主鍵-外鍵 級聯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.