如果我插入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
感谢您提供的任何智慧。