2016-08-16 119 views
2

我試圖插入另一行每當行使用觸發器插入表格後,卻收到以下錯誤消息:SQL服務器:插入一行觸發插入

目標表「EDDSDBO 。如果語句包含不帶INTO子句的OUTPUT子句 ,則DML語句的'RedAction'不能有任何啓用的觸發器 。

任何幫助創建這個變通方法將不勝感激。

從閱讀下面我的代碼的鏈接目前是以下

Cannot use UPDATE with OUTPUT clause when a trigger is on the table

SQL Server Helper workaround

代碼:

ALTER TRIGGER [EDDSDBO].[AddLabel] 
ON [EDDSDBO].[Redaction] 
AFTER INSERT 
AS 
BEGIN 
    DECLARE @T TABLE (
     [FileGuid] VARCHAR, [X] INT, [Y] INT, [Width] INT, [Height] INT 
    ) 

    INSERT INTO [Redaction] [FileGuid],[X],[Y],[Width],[Height] 
    OUTPUT [inserted].[FileGuid], [inserted].[X], [inserted].[Y], 
      [inserted].[Width], [inserted].[Height] 
    INTO @T 
     SELECT 
      [inserted].[FileGuid], [inserted].[X], [inserted].[Y], 70, 35 
     FROM 
      inserted 

    SELECT * 
    FROM @T 
END 

INSERT代碼最初的閱讀說明的鏈接之前以下:

INSERT INTO [Redaction] 
    [FileGuid],[X],[Y],[Width],[Height] 
SELECT TOP 1 
    [FileGuid], [X], [Y], 70, 35 
FROM [Redaction] AS r1 
ORDER BY [ID] DESC 

UPDATE: 原來,kCura的相對論平臺不允許使用觸發器插入,所以這是徒勞的......

回答

2

既然你是一個觸發器內,觸發本身就已經定義了Inserted僞表使用。

無法Inserted別名的OUTPUT條款將需要混合這一點。

因此,你不能不能在觸發器內使用OUTPUT子句。

另外:觸發器應該做好自己的工作默默不會產生任何結果集!

UPDATE:適當語法INSERT(這將是easily found on MSDN ...)是:

INSERT INTO [Redaction] ([FileGuid], [X], [Y], [Width], [Height]) 
    SELECT TOP 1 
     [FileGuid], [X], [Y], 70, 35 
    FROM 
     [Redaction] AS r1 
    ORDER BY 
     [ID] DESC 

您需要在INSERT INTO

添加 括號各地列的列表
+0

好的,但在使用'OUTPUT'(我剛剛添加到問題中)之前的代碼也拋出了同樣的錯誤,爲什麼? – JChristen