我有一个更新表中标志的存储过程和一个删除更新行的触发器,并将其插入新表中。因此,可以在存储过程中添加触发器的相同功能。所以我只想知道:
哪个更好用:存储过程或触发器?在什么情况下?换句话说,你能告诉我每个人的优点和缺点吗?
请注意,我正在使用SQL Server 2008,而我正在将VB.NET连接到我的数据库。
答案 0 :(得分:6)
如果发生特殊事件(插入,更新,删除),数据库会自动调用触发器。存储过程只是用户编写的数据库函数。此功能可以扩展我们简单的组复杂操作的数据库功能。用户或外部程序负责触发此额外功能的调用。
触发器可以调用存储过程。
我的建议......如果您想对数据库中的事件做出自动反应,请使用触发器。
使用过程来避免数据库代码中的代码冗余。
答案 1 :(得分:1)
这完全取决于您的要求,假设您有一个插入触发器&你的表需要经常插入。然后它会减慢插入过程。 另一方面,Sp将仅在您要命令时执行。
作为SQL对象,因此执行计划的条款没有区别等。
但是这又取决于你的要求,如果你想让你的表实时更新然后去触发,否则如果你能够等待一两个小时来使数据保持一致状态然后去SP
祝你好运