行级触发器(SQL Server 2008 R2)

时间:2013-12-02 03:28:10

标签: triggers sql-server-2008-r2

如果我插入1行,我的触发器工作正常,但如果插入多个行则不行。使用SQL Server 2008 R2,这适用于类项目。 Oracle有一个FOR EACH ROW设置,但我在SQL Server中找不到类似的东西......

CREATE TRIGGER tgRoom_HotelFloorName
ON Room
AFTER INSERT
AS
BEGIN

UPDATE Room
SET Room.HotelFloorName = (
SELECT HotelFloor.HotelFloorName FROM HotelFloor
JOIN  Inserted
ON HotelFloor.HotelFloorID = Inserted.HotelFloorID
AND Room.RoomID = Inserted.RoomID);

END;

以下是插入3条记录的结果;只更新了最后一个。根据SQL Server Management Studio中的消息,看起来其他两个已更新,但随后被覆盖。

RoomID  RoomName    HotelFloorID    HotelID HotelFloorName
1          San Diego A       12           2 NULL
2          San Diego B       12           2 NULL
3          Laguna                17           2 Lower Lobby Level, South Tower

感谢您提供的任何智慧。

0 个答案:

没有答案