使用触发器删除引用ID的所有引用的所有ID

时间:2014-08-12 04:29:04

标签: database sqlite triggers

pls guys ...当删除该特定ID时,有没有办法删除所有引用数据库中特定ID的iD?

例如,我有一个公司数据,其中包含有员工的部门列表,所有这些员工都有不同的记录,如出勤率,生物数据,工资计划等。

我设计我的数据库的方式是使用外键将部门下的员工引用到该部门,并且明智地说,特定员工下的所有记录都使用外键引用该员工。

现在,是否可以使用某种触发器或任何其他类型的机制,这样当我从员工表中删除员工时,每个其他记录也将被删除。

我会考虑使用多表删除,但由于我使用java sqlite,它不支持我阅读。我不想经历所有表格中一个接一个地删除所有记录的压力。

非常感谢你们

1 个答案:

答案 0 :(得分:1)

ON DELETE CASCADE可以帮到你。看看documentation

  

CASCADE:A" CASCADE" action将父键上的删除或更新操作传播到每个从属子键。对于" ON DELETE CASCADE" action,这意味着子表中与已删除的父行关联的每一行也将被删除

您只需要引用父表的行ID:

CREATE TABLE parentTable(
  parent_id    INTEGER PRIMARY KEY, 
  data  TEXT
);

CREATE TABLE childTable(
  child_id     INTEGER,
  parent_id INTEGER REFERENCES parentTable(parent_id) ON DELETE CASCADE
);

我认为你还需要激活外键才能工作:

PRAGMA foreign_keys = ON;