Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 语句包含一个输出子句,但在SQL Server 2012中使用触发器时没有INTO子句错误?_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

Sql server 语句包含一个输出子句,但在SQL Server 2012中使用触发器时没有INTO子句错误?

Sql server 语句包含一个输出子句,但在SQL Server 2012中使用触发器时没有INTO子句错误?,sql-server,sql-server-2008,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2012,我有一个用于审计记录插入、更新和删除的触发器。我的代码是 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[mytable_insertafter_audit] ON [dbo].[mytable] AFTER INSERT, DELETE, UPDATE AS BEGIN SET NOCOUNT ON; DECLARE @Action as char(1); SET @Act

我有一个用于审计记录插入、更新和删除的触发器。我的代码是

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[mytable_insertafter_audit]
ON [dbo].[mytable]
AFTER INSERT, DELETE, UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @Action as char(1);
    SET @Action = (CASE WHEN EXISTS(SELECT * FROM INSERTED)
                         AND EXISTS(SELECT * FROM DELETED)
                            THEN 'U'  -- Set Action to Updated.
                        WHEN EXISTS(SELECT * FROM INSERTED)
                            THEN 'I'  -- Set Action to Insert.
                        WHEN EXISTS(SELECT * FROM DELETED)
                            THEN 'D'  -- Set Action to Deleted.
                        ELSE NULL -- Skip. It may have been a "failed delete".   
                    END)

    IF (@Action = 'I')
    BEGIN
        INSERT INTO audit_trg
            SELECT 
                lr.sanction_status, i.sanction_status,
                GETDATE(), lr.id, 'mytable', @Action 
            FROM
                mytable lr
            INNER JOIN
                INSERTED i ON i.id = lr.id
    END
    ELSE IF (@Action = 'U')
    BEGIN
        INSERT INTO audit_trg
            SELECT
                i.sanction_status, lr.sanction_status,
                GETDATE(), lr.id, 'mytable', @Action 
            FROM
                mytable lr
            INNER JOIN 
                DELETED i ON i.id = lr.id
    END
    ELSE
    BEGIN
        INSERT INTO audit_trg
            SELECT
                lr.sanction_status, i.sanction_status,
                GETDATE(), lr.id, 'mytable', @Action 
            FROM 
                mytable lr
            INNER JOIN
                DELETED i ON i.id = lr.id
    END
END
和审计工作表

CREATE TABLE [dbo].[audit_trg]
(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [old_status] [varchar](50) NULL,
    [new_status] [varchar](50) NULL,
    [u_datetime] [datetime] NULL,
    [ref_id] [int] NULL,
    [table_name] [varchar](50) NULL,
    [actions] [varchar](50) NULL,

    CONSTRAINT [PK_audit_trg] 
        PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY]
但我在插入了一些错误后,发现

DML语句的目标表“dbo.mytable”不能具有 如果语句包含OUTPUT子句,则任何已启用的触发器 无需加入条款


导致errorLink语句的Link语句意味着什么?您提供了表和触发器的代码。请提供导致抛出该错误的insert语句的代码。我不知道,因为我一次插入了大量行,所以很难识别。那么,还有其他方法可以找到问题吗?为什么会发生@导致errorLink语句的XedniLink语句意味着什么?您提供了表和触发器的代码。请提供导致抛出该错误的insert语句的代码。我不知道,因为我一次插入了大量行,所以很难识别。那么,还有其他方法可以找到问题吗?为什么会发生@塞德尼