您的位置:首页 > 数据库

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

2015-07-06 23:25 597 查看
结论:

(以插入而例)

发布端的数据插入成功

订阅段的数据不会插入

实验

创建一张新表

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 行受影响)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: