删除子表中sqlite中的查询

时间:2011-02-09 06:19:49

标签: database record sql-delete

我有3个表,如员工,部门和电子表。

电子表是Department表的子表,Department表是Employee表的子表。

我想删除Employee表中的一条记录,其中E_id = 2(这是主键)这是Department表中的外键(E_id是外键,Dept_id是主键),Dept_id是Electronics表中的外键。 / p>

首先,我想删除Electronics表中的相关记录,然后删除Department表,最后删除Employee表。

请指导我如何操作。

1 个答案:

答案 0 :(得分:1)

您可以在此处阅读有关sqlite中外键支持的更多信息:http://www.sqlite.org/foreignkeys.html

但你应该可以打开它:

sqlite> PRAGMA foreign_keys = ON;

然后使用deletes cascading设置数据库架构:

-- Database schema
CREATE TABLE Employee(
  E_id    INTEGER PRIMARY KEY, 
  name    TEXT
);
CREATE TABLE Department(
  Dept_id     INTEGER PRIMARY KEY,
  name   TEXT, 
  E_id INTEGER REFERENCES Employee(E_id) ON DELETE CASCADE
);
CREATE TABLE Electronics(
  Elec_id     INTEGER PRIMARY KEY,
  name   TEXT, 
  Dept_id INTEGER REFERENCES Department(Dept_id) ON DELETE CASCADE
);

完成所有这些以及表格中的数据:

DELETE FROM Employee WHERE E_id = 2;