我试图更新一列上的多个行(SQL Server 2008)。我需要更新的列有插入和更新触发器。当我运行此脚本我得到一个错误信息:如何更新列的所有行
UPDATE htable
SET Isverified=1
WHERE columnname IN ('122','566','652')
错误:
Msg 512, Level 16, State 1, Procedure mydatabasename, Line 22
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我不知道如何真正的这是,但我愿意相信是由于触发定义此列。没有任何想知道我怎么能做到这一点
这里是触发:
ALTER TRIGGER [dbo].[sendTodbase]
ON [dbo].[htable]
AFTER UPDATE
AS
BEGIN DISTRIBUTED TRANSACTION
SET NOCOUNT ON
--CHECK IF DATAENTRY COLUMN IS UPDATED
IF UPDATE(Isverified) begin
declare @dEVer bit declare @rcNum varchar(50)
declare @idenNum varchar(50) declare @docId bigint
--GET INSERTED VALUE AND CHECK IF IT's (YES) THEN CONTINUE...
select @dEVer = (select Isverified from inserted i)
if @dEVer = 1 begin
--END CHECK, IF DE IS COMPLETED CONTINUE----
COMMIT TRAN
您缺少一个'set'子句(它将指定您想要更改哪个列和哪个值) –
此外,您的错误消息不会引用您发布的查询。 – Mihai
@a_horse_with_no_name我发布了完整的错误消息 – kombo