每当使用触发器插入一行时,我都试图将另一行插入到表中,但得到以下错误消息:
如果语句包含一个没有INTO子句的输出子句,则DML语句的目标表“EDDSDBO.Redaction”不能有任何已启用的触发器。
任何帮助创造一个解决办法,这将是非常感谢。
通过阅读下面的链接,我的代码当前如下
当触发器在表上时,无法使用UPDATE with OUTPUT子句。
Server帮助解决方案
代码:
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更新:发现kCura的相对论平台不允许插入触发器,所以这是徒劳的.
发布于 2016-08-16 10:58:29
由于您在触发器中,触发器本身已经为其使用定义了Inserted伪表。
不能将其与Inserted子句所需的OUTPUT别名混合使用。
因此,不能在触发器内的语句中使用OUTPUT子句。
另外:触发器应该默默地做他们的工作,而不是产生任何结果集!
更新:是INSERT的正确语法(将是在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行的列列表周围添加括号
https://stackoverflow.com/questions/38973000
复制相似问题