如何在另一个表SQL中添加数据时自动减少表中的列

时间:2018-05-15 08:08:25

标签: sql

我有4个表“IN SHOP”表,其中有一个变量“店内有多少游戏”,没有主键和2个forgein键的“Shop”,其中prmary键是ID,“Game”是主键也是身份证。现在我有一个表“购买”,它有一个主键ID和伪装键“商店ID”和“游戏ID”。现在我想知道是否有办法自动更新每次购买的“IN SHOP”表变量“多少游戏”。因此,如果有新购买,游戏数量减少1,如果销售被删除,则数量增加1.我试过

    alter table "IN SHOP"
   add constraint "FK_IN SHOP_REFERENCE_Purchase" foreign key ("GAME ID")
      references TEHING ("GAMES ID")
      on update "HMGIS" = "HMGIS" -1
      on delete "HMGIS" = "HMGIS" +1;

1 个答案:

答案 0 :(得分:1)

这是一个触发器的示例,您可以使用该触发器在插入或删除操作时更新金额。

CREATE TRIGGER UpdateAmount ON Purchase
FOR INSERT,DELETE
AS
BEGIN
   IF EXISTS (SELECT 1 FROM inserted)
    BEGIN
    -- I am an insert
    UPDATE IN_SHOP
    SET HMGIS = HMGIS-1; -- use the count of the rows in inserted table for bulk insert
    END
   ELSE
    BEGIN
    -- I am a delete
    UPDATE IN_SHOP
    SET HMGIS = HMGIS+1; -- use the count of the rows in deleted table for bulk delete
    END
END

这是一个问题,其中解释了如何通过插入或删除来确定是否触发了触发器:https://dba.stackexchange.com/questions/137862/check-if-the-trigger-was-fired-by-insert-or-delete?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa