【问题标题】:create a trigger in sqlite在 sqlite 中创建触发器
【发布时间】:2021-07-22 02:04:50
【问题描述】:

我需要创建一个触发器,在从表 Producers 中删除有关生产者的信息之前,它将替换 prod_id + 1 上的 Films 表中的 prod_id。我当前的代码:

    CREATE TRIGGER increment_prodid_before_delete
BEFORE DELETE ON Producers
BEGIN
    UPDATE Films SET prod_id = prod_id + 1 WHERE prod_id = (SELECT prod_id FROM Producers);
END;

[这是我的桌子的图片]

【问题讨论】:

    标签: sql database sqlite triggers


    【解决方案1】:

    不确定您为什么需要这样做,对于您要解决的任何问题,这看起来都不是一个明智的解决方案。但在这里回答你的问题是你怎么做:

    CREATE TRIGGER increment_prodid_before_delete 
    BEFORE DELETE ON Producers for each row  
    BEGIN
       UPDATE Films SET prod_id = prod_id + 1;
    END;
    

    【讨论】:

      【解决方案2】:

      子查询:

      SELECT prod_id FROM Producers
      

      返回表Producers的所有prod_ids。

      你需要的是被删除行的prod_id,你可以用OLD.prod_id得到它:

      CREATE TRIGGER increment_prodid_before_delete
      BEFORE DELETE ON Producers
      BEGIN
          UPDATE Films 
          SET prod_id = prod_id + 1 
          WHERE prod_id = OLD.prod_id;
      END;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 1970-01-01
        相关资源
        最近更新 更多