首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server:插入后插入带有触发器的行

Server:插入后插入带有触发器的行
EN

Stack Overflow用户
提问于 2016-08-16 10:53:27
回答 1查看 1.4K关注 0票数 3

每当使用触发器插入一行时,我都试图将另一行插入到表中,但得到以下错误消息:

如果语句包含一个没有INTO子句的输出子句,则DML语句的目标表“EDDSDBO.Redaction”不能有任何已启用的触发器。

任何帮助创造一个解决办法,这将是非常感谢。

通过阅读下面的链接,我的代码当前如下

当触发器在表上时,无法使用UPDATE with OUTPUT子句。

Server帮助解决方案

代码:

代码语言:javascript
复制
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代码最初如下:

代码语言:javascript
复制
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的相对论平台不允许插入触发器,所以这是徒劳的.

EN

回答 1

Stack Overflow用户

发布于 2016-08-16 10:58:29

由于您在触发器中,触发器本身已经为其使用定义了Inserted伪表。

不能将其与Inserted子句所需的OUTPUT别名混合使用。

因此,不能在触发器内的语句中使用OUTPUT子句。

另外:触发器应该默默地做他们的工作,而不是产生任何结果集!

更新:INSERT的正确语法(将是在MSDN上找到.)是:

代码语言:javascript
复制
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行的列列表周围添加括号

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38973000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档