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
Database 使用触发器删除所有引用的ID所有引用的ID_Database_Sqlite_Triggers - Fatal编程技术网

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

Database 使用触发器删除所有引用的ID所有引用的ID,database,sqlite,triggers,Database,Sqlite,Triggers,请各位…有没有一种方法可以在删除特定ID时删除数据库中特定ID引用的所有ID 举个例子,我有一个公司数据,上面有一个部门列表,下面有员工,而且所有这些员工都有不同的记录,比如出勤、生物数据、薪资计划e.t.c 我设计数据库的方式是,使用外键将某个部门下的员工引用到该部门,并且像wise一样,使用外键将某个特定员工下的所有记录引用到该员工 现在,是否可以有一种触发器或任何其他类型的机制,以便当我从staff表中删除staff时,引用该staff的所有其他记录也将被删除 我会考虑使用多表删除,但因为

请各位…有没有一种方法可以在删除特定ID时删除数据库中特定ID引用的所有ID

举个例子,我有一个公司数据,上面有一个部门列表,下面有员工,而且所有这些员工都有不同的记录,比如出勤、生物数据、薪资计划e.t.c

我设计数据库的方式是,使用外键将某个部门下的员工引用到该部门,并且像wise一样,使用外键将某个特定员工下的所有记录引用到该员工

现在,是否可以有一种触发器或任何其他类型的机制,以便当我从staff表中删除staff时,引用该staff的所有其他记录也将被删除

我会考虑使用多表删除,但因为我使用的是JavaSQLite,所以从我所读到的内容来看,它不支持多表删除。我不想承受从所有表中一个接一个地删除所有记录的压力


非常感谢删除级联的家伙们可以帮助你。请看一下:

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

您只需要引用父表的行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;

那么,您的意思是,如果我要删除您在上面引用的父表,子表也将被删除??这意味着,当父表中的一行被删除时,子表中的所有相关行(其外键指向已删除父表的行)将被自动删除。因此,如果删除父表的全部内容,子表的内容也将被删除。当我想显示引用到父ID的所有行时,这样的内容是否仍然适用。例如,我有一个员工表,我希望在一个表中显示其他表中的员工及其所有记录?为此,您需要使用JOIN,请不要使用如果您的问题已经解决,请忘记将答案标记为已接受。您可以点击答案旁边的复选标记,将答案从空心切换为绿色。