【问题标题】:How many stored procedure calls per transaction?每个事务有多少个存储过程调用?
【发布时间】:2010-11-16 01:21:57
【问题描述】:

我想问这个问题有点粗鲁,因为我应该努力(不仅仅是谷歌搜索)自己找出答案,但也许有人知道他头脑中的答案。

每个事务调用多少个存储过程(MS SQL 2005/2008)?比如说,我创建了一个存储过程,它在插入时触发,并且在 Java 应用程序中,我只在所有插入语句都发送后提交。存储过程是在每次插入时触发还是仅在我提交后触发?还是取决于我如何设置存储过程?

干杯, 最大

【问题讨论】:

  • 你说的是存储过程还是触发器?
  • 在某种程度上两者兼而有之。触发器正在调用存储过程,因此我要么修改触发器,使其每个事务只触发一次,要么修改存储过程,使其返回而不做任何事情,除非发生提交。

标签: sql sql-server tsql stored-procedures transactions


【解决方案1】:

触发器将为每个 INSERT 语句触发一次。因此,存储过程将在触发器每次运行时运行。执行次数与事务何时提交无关。

【讨论】:

  • 谢谢。是否可以更改触发器,使其仅在 INSERT 突发(即提交)结束时触发?
  • 不,插入触发器旨在在对表执行 INSERT 语句时触发。但是,通过一些额外的工作,您可以避免它。您可以查看可以替换 INSERT 触发器工作的 INSTEAD OF 触发器(不确定这是否适合您)。或者,您根本没有触发器。然后,您必须在其他地方(就在提交之前,可能在 Java 中)添加一个编码步骤,以完成您想要在触发器中执行的工作。
  • 好点。我开始质疑我的设计。触发器用于指示表中的 UPDATE/INSERT 更改。由于我完全控制了所有数据更改应用程序,因此我可能根本不通过数据库来指示更改,而是直接通过不同的消息传递方式指示更改。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 2021-09-24
  • 1970-01-01
相关资源
最近更新 更多