• [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 行受影响)
    
  • 相关阅读:
    深度学习代码注解(一)—— mnistdeepauto
    只属于你我的共同记忆
    只属于你我的共同记忆
    道教的认识
    道教的认识
    作家、文学大家、大师的艺术风格
    作家、文学大家、大师的艺术风格
    视频、画面、语言、文字与脑海、心灵
    视频、画面、语言、文字与脑海、心灵
    URAL 1963 Kite 四边形求对称轴数
  • 原文地址:https://www.cnblogs.com/shenfeng/p/sqlserver_subscribe_trigger_fail.html
Copyright © 2020-2023  润新知