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  
 
三:主鍵-外鍵 級聯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章