SQLite에는 외래 키 제약 조건을 적용하는 트리거를 생성하는 genfkey 유틸리티가 함께 제공됩니다. 다음은 source입니다. README도 있습니다. 이전 URL을 f = sqlite/tool/genfkey.README (stackoverflow는 하나의 url을 게시 만 허용)로 변경하십시오.SQLite의 외래 키 트리거
참조시 BEFORE INSERT 및 BEFORE UPDATE가 두 쌍씩 생성됩니다. 테이블 및 BEFORE DELETE 및 참조 테이블에서 AFTER UPDATE. 마지막 트리거가 다른 트리거와는 다르게 왜 발생했는지 알 수 없습니다. 원본의 741 줄을 보거나 "AFTER"를 검색하면 파일의 유일한 인스턴스입니다.
큰 거래는 아닙니다. 거래를하고 AFTER 트리거가 오류를 생성하면 롤백 할 수 있습니다. 아무도 아이디어가 다른 이유가 있는지 궁금합니다.
빙고 - 나는 CASCADE 케이스가 아닌 ON UPDATE RESTRICT 케이스 만 고려했습니다. 새 케 이블 ID를 사용하면 업데이트를 계단식으로 연결할 수 있습니다. 감사! –
설명 - 트리거는 이전의 경우에도 업데이트 된 행 데이터에 대한 액세스를 수행합니다. BEFORE 문제는 캐스케이드가 시작된 경우 참조 FK 트리거가 실행되고 새 참조 데이터가 아직 적용되지 않은 경우 오류가 발생합니다. –