我的问题涉及SET NOCOUNT ON
在触发器中的正确定位 - 在谷歌搜索相对于' BEGIN'似乎有争议。
我们有多个类似于下面的触发器,其中一个仍然将结果返回给应用程序。 SET NOCOUNT ON
'之后BEGIN
的正确位置是什么?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [scheme].[T_AD_IU_STOCKM] ON [scheme].[stockm]
AFTER INSERT, UPDATE
AS
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET NOCOUNT ON
IF (update([alpha]) or update([catalogue_number]) or update([current_cost]) or update([description])
or update([expected_cost]) or update([long_description]) or update([physical_qty]) or update([price])
or update([product]) or update([standard_cost]))
BEGIN
//Should 'SET NOCOUNT ON' be here?
insert into Bespoke_JLA.dbo.MOD_STOCKM
SELECT
distinct i.product, i.warehouse, getdate()
FROM
inserted i
WHERE
i.warehouse in ('PH', 'MH');
END
GO
答案 0 :(得分:0)
在触发器的开头使用SET NOCOUNT语句,以防止返回任何结果集。
有关详细信息,请参阅以下MSDN链接中的触发限制阻止 Trigger Limitations