zoukankan      html  css  js  c++  java
  • [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 行受影响)
    
  • 相关阅读:
    迷宫
    【NOIP2001普及组】最大公约数和最小公倍数问题
    latex online tool
    连续自然数和
    又是毕业季Ⅰ
    区间素数
    【AHOI2005】约数研究
    【NOIP2011提高组】计算系数
    【NOIP2012普及组】寻宝
    plsql 导出oracle数据库
  • 原文地址:https://www.cnblogs.com/shenfeng/p/sqlserver_subscribe_trigger_fail.html
Copyright © 2011-2022 走看看