首页 新闻 赞助 找找看

SQL高手请进,触发器的运用,一个表操作时,另一个表也跟着操作!

1
悬赏园豆:30 [已解决问题] 解决于 2011-10-17 10:41

有A和B两个表,当A表插入数据时,那么B也会插入相同的数据(以及修改过的数据),同理,当在B表插入数据时,A表也会记录B表插入的数据(以及修改过的数据),怎么去实现这个功能,我用了触发器,只能实现一半,就是当A表改变时,B表也跟着变动,但B表变动时,A表不行了,因为触发器好像只能用一个,各位有没有其它的更好的想法,最好是把代码也写一下(前提是自己在SQLServer中能够success),不能通过的SQLServe语句就别贴出来了。谢谢!

刘小华的主页 刘小华 | 初学一级 | 园豆:173
提问于:2011-10-14 21:39
< >
分享
最佳答案
1

1在AB表建触发器,

2关闭 nested triggers 服务器选项,禁止触发器嵌套 ;

如果不这样做也可以让触发器A 在修改B表数据前先禁用B上的触发器

execute('disable trigger trgB on B');

修改完成后再启用execute('enable trigger trgA on A');

同理触发器B也做同样设置

3虽然数据库支持这样的操作,但是仍然建议你在程序中完成,而不是依靠数据库。抛开性能不说,当你同时操作表A和表B的时候,可能会产生脏数据

4我不喜欢你的语气~

收获园豆:25
死白的man | 老鸟四级 |园豆:2135 | 2011-10-14 22:09

你好,因为我原来在QQ提问中也问了,但他们都是从网上下一些代码贴过来的,所以我才会提示,感谢你的回答,你能不能把代码贴出来,谢谢!

刘小华 | 园豆:173 (初学一级) | 2011-10-15 10:51

感谢你的回答,按你的思路去解决了,谢谢你,现在个人想用事务去解决。以后发表帖会注意语气,呵呵,谢谢提醒!

刘小华 | 园豆:173 (初学一级) | 2011-10-17 10:28
其他回答(1)
0

你好,小弟写过类似的文章,你可以了解一下,不过没有多表的触发操作

Transact-SQL 示例 - 触发器的基础及应用

收获园豆:5
dotNetDR_ | 园豆:2078 (老鸟四级) | 2011-10-16 00:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册