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  
 
三:主键-外键 级联
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值