我有触发更新插入
CREATE TRIGGER tgBooking_update_seat
ON dbo.booking
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS (SELECT * FROM INSERTED) BEGIN
-- Handle insert or update
UPDATE Seats
SET status = Bookings.statusBooked
FROM dbo.seat Seats
INNER JOIN INSERTED Bookings ON Bookings.noSeat = Seats.noSeat
END
END
这是我的表seat
。这个表是我的座位列表,这个表有一个status
列,我默认设置为0。
这是我的表booking
。我默认将每个插入操作statusBooked
设置为1。如果end
等于当前时间,则statusBooked
将自动更新为0.
我想自动将status
上的dbo.seat
更新为与statusBooked
上的dbo.booking
相同的值。
statusbooked
为1,则status
应更新为1 statusBooked
更新为0,则status
必须更新为0 所以状态是noSeat的引用statusBooked
。我写了触发器,它可以工作。
但是第一次(当所有dbo.seat
状态为0时),它都无法正常工作。
示例:
(当status
全部为0时)我插入booking
(noSeat:1-5),statusBooked
为1但status
(noSeat:1-5) )保持0.然后我第二次插入,它只是工作。我再次插入booking
(noSeat:1-7)statusBooked
为1而status
(noSeat:1-7)也为1.但status
为noSeat 1- 5仍然是0.
我只有一个触发器。那么问题是什么?
答案 0 :(得分:0)
FROM dbo.seat Seats
INNER JOIN INSERTED Bookings
ON Bookings.noSeat = Seats.noSeat
我认为你的触发器中不需要这段代码,因为你已经提到过要更新你的Seats表:
UPDATE Seats SET
我建议你像这样重写它,然后再试一次:
UPDATE Seats SET
status = Bookings.statusBooked
WHERE Bookings.noSeat = Seats.noSeat
另外我建议你尝试使用关键字'new'而不是INSERTED,因为我自己有触发器的一些问题,我得到了这个建议。希望它能帮到你! 这是关于触发器的问题......有人回答了,你也可以参考它,这里是链接:
I have a syntax error in my code for creating a trigger using sql. I use mysql version 14.14