我有2个表dbo.booking
和dbo.seat
与这些结构:如何INSERT,UPDATE触发器的SQL服务器
dbo.booking
有列noBooking, noSeat, start, [end], statusBooked
dbo.seat
有列noSeat, statusSeat
每一行我插入到dbo.booking
(设置为1),则上dbo.seat
柱statusSeat
(值缺省情况下为0)如果statusBooked
被更新为0,那么statusSeat
也将更新为0。
将更新为1。
我的意思是statusSeat
(0由默认)会更新并按照statusBooked
的值。
我试图用一个触发器:
ALTER TRIGGER [dbo].[TriggerUpdateSeat]
ON [dbo].[booking]
AFTER INSERT, UPDATE
AS
UPDATE dbo.seat
SET seat.statusSeat = i.statusBooked
FROM Inserted i
WHERE dbo.seat.noSeat = i.noSeat;
但问题是,当我第一次插上dbo.booking
数据,dbo.seat
充满statusSeat
是必须更新到1,但它不更新,1这是行不通的。但对于第二个和前进它的作品。 statusSeat
值为以下statusBooked
的值。
问题只发生在我第一次运行我的程序并插入数据。
为什么?
看起来你的桌子'座位'通过'noSeat'列引用预订 - 对吗?那么为什么你甚至需要'statusSeat'列呢?只需连接到'dbo.Booking'表并读出'statusBooked' - 没有必要让两列包含相同的信息,并且担心让它们保持同步 - 避免这种数据冗余! – 2015-02-12 05:59:06
是的,通过noSeat列的座位引用预订。 ,因为我有一些座位,我想显示哪些预订和哪些可用,所以我添加了statusSeat。 statusBooked仅用于“交易”状态。如果我没有添加statusSeat,我将很难在另一个案例中执行我的项目。那么如何解决我上面的问题? @marc_s – azalikaEriya 2015-02-12 06:23:57