【发布时间】:2012-02-29 04:59:14
【问题描述】:
我编写了一个更新触发器,当我只更新一行时它可以正常工作,但当我更新多行时会出错。
错误:
消息 512,级别 16,状态 1,过程 Sale_OnUpdate,第 14 行子查询返回超过 1 个值。 当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
这里是触发器
ALTER TRIGGER [dbo].[Sale_OnUpdate] ON [dbo].[Sale]
AFTER Update
AS
Declare @ID as decimal
Declare @User as varchar(250)
Declare @Status as varchar(250)
set @ID = (Select ID from Inserted)
set @User = (Select UpdatedByUser from Inserted)
set @Status = Isnull((Select Status from Inserted),'')
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO [dbo].[Log]
(
[RecordID]
,[Date]
,[Time]
,[UserName]
,[TableName]
,[Action]
)
VALUES
(
@ID
,GetDate()
,GetDate()
,@User
,'Sale'
,'Update,' + @Status
)
END
我应该做些什么改变使它适用于多行。
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql triggers