【问题标题】: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;