Удалить запрос в sqlite для дочерних таблиц - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть 3 таблицы, такие как таблицы Employee, Department и Electronics.

Таблица электроники является дочерней таблицей для таблицы Department, а таблица Department является дочерней таблицей для таблицы Employee.

Я хочу удалить одну запись в таблице Employee, где E_id = 2 (это первичный ключ). Это внешний ключ в таблице Department (E_id - внешний ключ, Dept_id - первичный ключ), а Dept_id - внешний ключ в таблице электроники.

Сначала я хочу удалить связанные записи в таблице электроники, затем в таблице отделов и, наконец, в таблице сотрудников.

Пожалуйста, подскажите мне, как это сделать.

1 Ответ

1 голос
/ 09 февраля 2011

Вы можете узнать больше о поддержке внешнего ключа в sqlite здесь: http://www.sqlite.org/foreignkeys.html

, но вы можете включить его:

sqlite> PRAGMA foreign_keys = ON;

, а затем настроить схему базы данных с помощьюкаскадное удаление:

-- 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;
...