baidu_16632897 2015-01-27 11:41 采纳率: 0%
浏览 2571
已结题

SQL 触发器批量删除数据

有A主表,B表为临时表两个表,两个表的结构完全相同,主键分别为ch_billno,ch_tableno,ssid,我想做一个触发器,当A表插入主键数据时,把临时表中存在相同主键的数据删除,插入数据的时候会用到sqlbulkcopy方式插入,只会引发一次insert操作。

  • 写回答

1条回答 默认 最新

  • 吉普赛的歌 2015-01-27 12:19
    关注

    亲测可用, 楼主速速采纳吧, 呵呵

     --1. 创建测试表 A,B 及测试数据
    IF OBJECT_ID('dbo.A') IS NOT nuLL 
    BEGIN
        DROP TABLE dbo.A
    END
    GO
    CREATE TABLE dbo.A
    (
        id INT PRIMARY KEY,
        n  NVARCHAR(10) 
    )
    GO
    IF OBJECT_ID('dbo.B') IS NOT nuLL 
    BEGIN
        DROP TABLE dbo.B
    END
    GO
    CREATE TABLE dbo.B
    (
        id INT,
        n  NVARCHAR(10) 
    )
    GO
    --SET NOCOUNT ON
    INSERT INTO dbo.B (id,n) VALUES(1, N'小明')
    INSERT INTO dbo.B (id,n) VALUES(2, N'小华')
    
    SELECT * FROM A
    SELECT * FROM B
    /*
    --A表
    id          n
    ----------- ----------
    
    --B表
    id          n
    ----------- ----------
    1           小明
    2           小华
    */
    --2. 创建触发器
    IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[Trig_A_I]'))
        DROP TRIGGER [dbo].[Trig_A_I]
    GO
    -- =============================================
    -- Author:      yenange
    -- Create date: 2015-01-27
    -- Description: 当A表插入记录时,删除B表中主键相同的记录
    -- =============================================
    CREATE TRIGGER dbo.Trig_A_I 
       ON  dbo.A 
       FOR INSERT
    AS 
    BEGIN
        SET NOCOUNT ON;
        DELETE FROM dbo.B WHERE b.id IN (
            SELECT id FROM inserted 
        )
    END
    GO
    
    --3. 测试:往A表中插入 id =1 的记录, 
    --   期待结果: 
    --       A 表有id=1 的记录, 
    --       B 表原来有 id =1,2 两条记录变为只有id=2 一条记录
    INSERT INTO dbo.A (id,n) VALUES(1, N'小明')
    
    SELECT * FROM A
    SELECT * FROM B
    /*
    --A表
    id          n
    ----------- ----------
    1           小明
    --B表
    id          n
    ----------- ----------
    2           小华
    */
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?