-2

我有一个包含 id、title、inventory 列的电影表,我添加了一个列 rent_count。我在网上找到了在更新行后增加rental_count的解决方案,但是只有在库存减少时(当有人租用东西时)才能增加租用计数?

4

1 回答 1

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

因此,如果已删除表中存在与插入表中的行匹配的任何行,其中库存的新插入值比旧值小一,那么,对于每个这样的行,您要更新(增量)rental_count场地。

触发器依赖于 If Exists 语句来确定插入和删除中是否存在任何此类行。然后,如果有的话,它会增加rental_countMovies 表中匹配行中的值。

于 2013-04-12T20:07:59.177 回答