【发布时间】:2015-01-05 05:48:25
【问题描述】:
我需要使用触发器将多行插入另一个表,但它只插入最后一条记录 我检查了stackoverflow中的其他一些帖子,但没有找到答案,
这是我的触发器
IF(@TNAEventID IN(1,2,3))
BEGIN
INSERT INTO [Biostar].Cen.WentOutLog (AutoID, nUserID, nOutDateTime,nOutTNAEvent ,nReaderID) values (@AutoID,@UseID, @DateTime,@TNAEventID, @ReaderID )
END
else IF(@TNAEventID=0)
BEGIN
UPDATE Cen.WentOutLog Set nINDateTime =@DateTime,nInTNAEvent = @TNAEventID Where AutoID = (Select top (1) AutoID from Cen.WentOutLog where nINDateTime is null AND nOutDateTime<@DateTime AND nUserID=@UseID order by nOutDateTime desc)
END
else
begin
....
end
提前致谢。
【问题讨论】:
-
由于您正在为 INSERTED 表中的变量分配值,因此它只会保留插入的最后一行。要插入所有行,您只需简单地使用: INSERT INTO
SELECT FROM INSERTED -
同样的事情可以用 UPDATE 来处理多行。您需要使用带有JOIN子句的UPDATE语句,您可以在网上找到大量示例。
-
@Vishal 我在整个互联网上进行了搜索,但我不明白那些你能根据上面的查询为我创建那个代码吗?
标签: sql-server sql-server-2008 triggers