7

我有一个更新表中的标志的存储过程和一个删除更新行并将其插入新表的触发器。因此,可以在存储过程中添加触发器的相同功能。所以我只想知道:

哪个更好用:存储过程还是触发器?在什么情况下?换句话说,你能告诉我每一种的优点和缺点吗?

请注意,我使用的是 SQL Server 2008,并且正在将 VB.NET 连接到我的数据库。

4

2 回答 2

8

如果发生特殊事件(插入、更新、删除),数据库会自动调用触发器。存储过程只是用户编写的数据库函数。该功能可以扩展我们简单分组复杂操作的数据库功能。用户或外部程序负责触发这个额外函数的调用。

触发器可以调用存储过程。

我的建议...如果您想对数据库中的事件进行自动反应,请使用触发器。

使用过程来避免数据库代码中的代码冗余。

于 2013-09-09T09:07:58.917 回答
1

这完全取决于您的要求,假设您有一个插入触发器并且您的表需要频繁插入。那么它会减慢插入过程。另一方面, Sp 只有在您要命令时才会执行。

两者都是 SQL 对象,因此在执行计划等方面没有区别。

但这又取决于您的要求,如果您希望实时更新表,则使用触发器,否则,如果您有能力等待一两个小时以使数据处于一致状态,则使用 SP。

祝你好运

于 2013-09-09T09:06:21.530 回答