2011-02-09 3 views
0

직원, 부서 및 전자 테이블과 같은 3 개의 테이블이 있습니다.자식 테이블에 대한 sqlite의 쿼리 삭제

전자 테이블은 부서 테이블의 하위 테이블이고 부서 테이블은 직원 테이블의 하위 테이블입니다.

Employee 테이블에서 E_id = 2 (기본 키) 레코드 하나를 삭제하고 싶습니다. 부서 테이블의 외래 키 (E_id는 외래 ​​키, Dept_id는 기본 키)이고 Dept_id는 전자 테이블의 외래 키입니다.

먼저 Electronics 테이블에서 Department 테이블과 마지막으로 Employee 테이블에서 관련 레코드를 삭제하고 싶습니다.

안내 방법을 안내해주세요. http://www.sqlite.org/foreignkeys.html

하지만 당신은 컴퓨터를 켭 할 수 있어야한다 :

+0

그 답변이 도움이 되었습니까? – Ben

답변

1

현재 sqlite가에서 외래 키 지원에 대한 자세한 내용을보실 수 있습니다 다음

sqlite> PRAGMA foreign_keys = ON; 

및 설정 삭제는 계단식으로 데이터베이스 스키마 :

,691 : 모든 장소에서이와 테이블의 데이터와
-- 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; 
+0

참고 : "PRAGMA foreign_keys"명령이 "0"또는 "1"을 포함하는 단일 행 대신 데이터를 반환하지 않으면 사용중인 SQLite 버전이 외래 키를 지원하지 않습니다 (3.6.19 이전이기 때문에). 또는 SQLITE_OMIT_FOREIGN_KEY 또는 SQLITE_OMIT_TRIGGER가 정의되어 컴파일 되었기 때문에). – Ben