我有一个包含列ID,标题,库存的电影表,我添加了一列rental_count。在线更新后,我发现在线增加rental_count的解决方案,但是只有当库存减少时(当有人租房时)才可以增加租赁数量吗?
答案 0 :(得分:1)
Create trigger trigUpdateRentalCount
On Movies for Update
As
if Exists( Select * from inserted I
Join deleted d
On d.pk = i.pk
Where i.inventory = d.inventory - 1)
Update m Set rental_count += 1
From Movies m
join (inserted i Join deleted d
on i.pk = d.Pk
and i.inventory = d.inventory - 1)
on i.PK = m.PK
编辑解释触发器。在任何触发器中,用户都可以通过导致触发器触发的sql语句访问要删除或更新的行集(使用旧值)。可以使用关键字deleted
访问此集。
使用关键字inserted
,它还可以访问所有插入或更新的行(使用新的更新值)。
因此,如果删除的表中存在与插入表中的行匹配的任何行,其中库存的新插入值比旧值小1,则对于每个此类行,您要更新(递增)rental_count
字段。
触发器依赖于If Exists语句来确定插入和删除中是否存在任何此类行。然后,如果有,它会增加Movies表中匹配行中的rental_count
值。