Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sqlite中创建触发器_Sql_Database_Sqlite_Triggers - Fatal编程技术网

在sqlite中创建触发器

在sqlite中创建触发器,sql,database,sqlite,triggers,Sql,Database,Sqlite,Triggers,我需要创建一个触发器,在从表中删除关于制片人的信息之前,制片人将替换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; [

我需要创建一个触发器,在从表中删除关于制片人的信息之前,制片人将替换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;

[这是我的表格的图片]

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

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

SELECT prod_id FROM Producers
返回表
生产者的所有
产品id

您需要的是已删除行的
prod\u id
,您可以使用
OLD.prod\u 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;