当第一行中的数据删除时如何从第二个表中删除数据

时间:2014-01-11 16:06:03

标签: sql database sqlite database-design triggers

我在SQLite中有两个简单的表。

第一张表:notebook_id,notebook_name

(1, lenovo) 
(2, hp) 

第二张表:model_id,notebook_id,model_name,price

例如

(1, 1, y580, 1000)
(2, 1, y510p, 1500)

当我从第一张表中删除lenovo时,我也想从第二张表中删​​除lenovo的模型。我知道我应该使用触发器,但如果有人在这个简单的例子中解释触发器,那将会很棒。

我正在添加工作正常的代码,我希望它可以帮到某些人。

CREATE TRIGGER trigger_name
       BEFORE DELETE ON notebook
BEGIN
    DELETE
      FROM model
     WHERE notebook_id = old.notebook_id;
END;

1 个答案:

答案 0 :(得分:1)

这通常被称为亲子关系 所以第一个表是你的父表,第二个表是你的子表。
您可以设置级联删除,以便在删除父行时, 属于该父行的所有子行也将被删除。

有关详细信息,请参阅:

http://www.sqlite.org/foreignkeys.html

尤其是这部分:

“4.3.ON DELETE和ON UPDATE Actions”

参见那里有艺术家和曲目的例子,它是
几乎与你的情况类似(如果不相同)。

当然,您也可以在自己的应用中处理此问题 并且在删除父行之前自己动手,
只需转到子表并删除所有子行 指向那个特定的父行。