触发器不会执行存储过程
Trigger will not execute stored procedure
我有以下触发器:
USE SomeDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [Staging].[RunPivot15]
ON [Staging].[UriData]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
EXEC [Staging].[PivotData]
END
它不会开火。有关的 table 每五分钟收到大约 30 行。从那时起,我被困住了。我一直在阅读,因为插入了不止一行,所以我必须 运行 一个游标。我已经试过光标,但也无法正常工作。
你能告诉我最好的方法是什么吗?
TIA
触发不 运行 的可能性很小。在触发器中的过程调用周围添加几个打印语句,最终也在存储过程中添加。这将帮助您在 运行 Management Studio 中的更新语句触发触发器时跟踪执行。
USE SomeDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [Staging].[RunPivot15]
ON [Staging].[UriData]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
PRINT 'Before call.'
EXEC [Staging].[PivotData]
PRINT 'After call.'
END
然后 运行 Management Studio 中的更新语句并检查“消息”选项卡以查看是否打印了您的消息。
update Staging.RunPivot15 set SomeColumn = SomeColumn where SomeColumn = SomeValue
不,您不需要游标。当你的触发器被执行时,如果不止一行受到影响,插入/删除的伪表中也会有多行。在您的情况下,您也不会阅读更新了哪些行,因此只需 运行 该过程。如果您需要知道确切修改了哪些行,则编写代码以基于集合的方法处理它们(一次处理所有行)。在数据库中使用游标循环实际上不是一个好主意。
我有以下触发器:
USE SomeDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [Staging].[RunPivot15]
ON [Staging].[UriData]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
EXEC [Staging].[PivotData]
END
它不会开火。有关的 table 每五分钟收到大约 30 行。从那时起,我被困住了。我一直在阅读,因为插入了不止一行,所以我必须 运行 一个游标。我已经试过光标,但也无法正常工作。
你能告诉我最好的方法是什么吗?
TIA
触发不 运行 的可能性很小。在触发器中的过程调用周围添加几个打印语句,最终也在存储过程中添加。这将帮助您在 运行 Management Studio 中的更新语句触发触发器时跟踪执行。
USE SomeDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [Staging].[RunPivot15]
ON [Staging].[UriData]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
PRINT 'Before call.'
EXEC [Staging].[PivotData]
PRINT 'After call.'
END
然后 运行 Management Studio 中的更新语句并检查“消息”选项卡以查看是否打印了您的消息。
update Staging.RunPivot15 set SomeColumn = SomeColumn where SomeColumn = SomeValue
不,您不需要游标。当你的触发器被执行时,如果不止一行受到影响,插入/删除的伪表中也会有多行。在您的情况下,您也不会阅读更新了哪些行,因此只需 运行 该过程。如果您需要知道确切修改了哪些行,则编写代码以基于集合的方法处理它们(一次处理所有行)。在数据库中使用游标循环实际上不是一个好主意。