• [sql server发布订阅]after触发器执行失败造成复制不成功


    结论:
    (以插入而例)

    • 发布端的数据插入成功
    • 订阅段的数据不会插入

    实验

    创建一张新表

    create table test_subscriber (id int, mark varchar(2),inserttime datetime)
    

    在订阅表上创建触发器

    CREATE TRIGGER [dbo].[sf_test]
       ON  [dbo].[t2]
       AFTER INSERT
    AS 
    BEGIN
        
        SET NOCOUNT ON;
    
        insert into test_subscriber
        select c1,c2,getdate() from inserted
    
    	
    END
    
    GO
    

    在发布端执行满足条件的插入

    如果C2的字段长度<=2,则触发器能够执行成功,那么两端的数据都能得到更新。

    insert into t2 values (5,'xx')
    

    订阅端(和发布端一致)

    1> select * from t2 where c1=5
    2> go
    c1          c2
    ----------- -----------------------
              5 xx
    
    (1 行受影响)
    
    1> select * from test_subscriber
    2> go
    id          mark inserttime
    ----------- ---- -----------------------
              5 xx   2015-07-06 22:39:37.227
    
    (1 行受影响)
    

    插入使触发器执行失败的数据

    insert into t2 values (6,'3xx')
    

    发布端

    1> use sql2008sbs
    2> select * from t2 where c1=6
    3> go
    已将数据库上下文更改为 'sql2008sbs'。
    c1          c2
    ----------- ----------------------------
              6 3xx
    
    (1 行受影响)
    

    订阅端

    
    1> select * from t2 where c1=6
    2> go
    c1          c2
    ----------- ------------------------
    
    (0 行受影响)
    

    记录表

    1> select * from test_subscriber where id=6
    2> go
    id          mark inserttime
    ----------- ---- -----------------------
    
    (0 行受影响)
    
  • 相关阅读:
    C++ STL 一般总结(转载)
    Python高级语法总结
    Adaboost 算法的原理与推导——转载及修改完善
    简化版SMO算法标注
    【转载】机器学习算法基础概念学习总结
    C++中添加配置文件读写方法
    Python中scatter()函数--转载
    python 之 strip()--(转载)
    zabbix邮件报警脚本(Python)
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/shenfeng/p/sqlserver_subscribe_trigger_fail.html
Copyright © 2020-2023  润新知