以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  触发器与跨表更新的疑问  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100817)

--  作者:happyft
--  发布时间:2017/5/18 21:39:00
--  触发器与跨表更新的疑问
个人觉得用触发器中写代码跨表更新数据很方便,因为可以方便的从inserted和deleted表获取数据,只是感觉类似的代码要在insert,update,delete三个触发器中写三次,但也比在项目中写简单啊,  为什么 网上所有的人都讲尽量少用触发器而应该改用储存过程,但储存过程有时要获取一些动态的变量不是很方便,请问触发器会有什么问题吗?   谢谢!
--  作者:有点色
--  发布时间:2017/5/18 22:55:00
--  

 也不是慎用,没什么大问题的。

 

 触发器比较隐蔽,不利于对数据的维护。有时候正常的结果,保存到数据库,就变了一个样,不利于你跟踪调试错误。

 

 至于性能上,多少会影响一些。


--  作者:HappyFt
--  发布时间:2017/5/18 23:54:00
--  
触发器可以一次性获取多行数据连接其他表进行跨表更新数据,不用一行一行的获取,还以为更高效,为何性能上还差啊.
--  作者:有点蓝
--  发布时间:2017/5/19 8:28:00
--  
http://blog.csdn.net/jesse621/article/details/9452049

简单来说有2点原因是大多数人不喜欢用触发器的原因:

1、容易产生数据库死锁,并发性能低
2、数据的流转,业务的逻辑流程难以跟踪和控制。

--  作者:jspta
--  发布时间:2017/5/19 9:03:00
--  
狐表使用触发器好像save功能有异常
--  作者:有点色
--  发布时间:2017/5/19 9:05:00
--  
以下是引用jspta在2017/5/19 9:03:00的发言:
狐表使用触发器好像save功能有异常

 

怎么说?如何重现?


--  作者:HappyFt
--  发布时间:2017/5/19 10:16:00
--  
现在已经没有用狐表默认的save,改为直接用sql保存了.触发器主要用于根据出入库单据中的品质判断结果更新库存表中的即时库存.
--  作者:有点色
--  发布时间:2017/5/19 10:19:00
--  
 触发器使用没有问题的,只要注意一下就好了。你用sql语句、事务处理,也是可以的。你自行权衡利弊。