2010-01-08 157 views
0

我在SQL Server 2005中触发器有问题,我创建了触发器,并且我测试了它手动插入行并且它可以正常工作,但是我调用了存储过程ac#web应用程序并且触发器不会被触发,所以我从Web应用程序中插入了相同的数据,删除了该行并手动重新插入,并且触发器再次以这种方式工作,但从存储过程调用Web应用。SQL Server 2005中触发器的问题

有什么建议吗?

在此先感谢。

阿尔伯特

+2

您需要发布代码,因为必须有其他事情正在进行。 – duckworth 2010-01-08 16:54:27

+1

您的存储过程在它的工作之前是否禁用触发器? – 2010-01-08 16:57:56

+0

不,它没有禁用触发器,我忘了提到触发器tOrder将表中的记录插入到表OrderEx中,因此表OrderEx本身具有另一个触发器tOrderEx,它在表OrderInfo中插入一条记录,不确定是否必须对问题做些什么 – Albert 2010-01-08 17:13:21

回答

0

你应该在一般情况下,避免使用嵌套触发器,如果​​你能避免这些产品总数,通过各种手段做到这一点。它们很难调试,对其他开发人员不可见(这可能会导致未来的逻辑问题),并可能导致负载下的性能问题。

看到这篇文章:Why use triggers in Microsoft SQL Server?

避免使用嵌套触发器默认情况下,如果一个触发器更改其他 表,触发器宣布 这些表不会被触发。 “允许嵌套触发器”服务器选项 将数据库设置为具有相反的 行为。当 触发器执行一个动作,即 启动另一个触发器时,触发器会被嵌套, 可以启动另一个触发器等等。 触发器最多可以嵌套32个 级别。嵌套触发器的逻辑非常难以遵循,并且它们可能会影响性能。

0

而不是触发器从您的web应用程序使用直接插入语句。这样监控和调试会更容易。