2010-02-19 6 views
0

이 주제에 익숙하지 않습니다. 나는 이런 것을 원한다.sqlite3에서 트리거를 만드는 방법은 무엇입니까?

나는 내 sqliteDatabase에서 하나의 테이블을 마스터하고 다른 하나는 자식입니다. 이제 master에서 레코드를 삭제하면 id = 5 인 master에서 행을 삭제한다고 가정하고 id = 5 인 자식 테이블의 모든 레코드가 자동으로 삭제됩니다. 트리거를 만드는 방법과 외래 키 제약 조건을 적용하는 방법을 모르는 사람이라서 누군가 sqlite3 Manager에서 이것을 수행 할 수있는 방법을 알려주십시오. 감사

+0

SQLite 버전 3.6.19 이상인 경우 트리거없이이 작업을 수행 할 수 있습니다. 외래 키에 대한 정보는 Peter Lang의 대답을 참조하십시오. –

+0

예, 3.6.19 이상은 외래 키를 지원합니다. "pragma foreign_keys = on"을 실행하기 위해 연결 직후를 잊지 마십시오. –

+0

버전에 대해 모르겠다. firefox sqlite manager ver 0.5.11 –

답변

3

당신은 그것을위한 트리거가 필요하지 않습니다, 당신의 외래 키가 할 것입니다 당신이 정의하는 경우 ON DELETE CASCADE :

CREATE TABLE child(
    id   INTEGER, 
    some_info TEXT, 
    master_id INTEGER, 
    FOREIGN KEY(master_id) REFERENCES master(id) ON DELETE CASCADE 
); 

documentation about foreign keys을 참조하십시오.

편집 :

당신이 정말로 트리거를 사용하여 작업을 수행해야하는 경우는, Foreing Key Triggers를 보라.

+0

작동하지 않습니다 –

+0

http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers –

+0

이 트리거를 만들 수 있습니까? –

관련 문제