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语句的代码。我不知道,因为我一次插入了大量行,所以很难识别。那么,还有其他方法可以找到问题吗?为什么会发生@塞德尼