23503: foreign_key_violation
PostgreSQL의미
FOREIGN KEY 제약 조건이 위반되었다. 삽입/갱신된 행이 참조하는 부모 행이 존재하지 않거나, 삭제하려는 부모 행에 아직 종속된 자식 행이 있다.
원인
존재하지 않는 부모 키를 참조하는 INSERT/UPDATE, 아직 참조되고 있는 부모 행의 삭제/갱신 시도, 또는 잘못된 순서로 로드된 데이터(자식 먼저, 그다음 부모).
해결 방법
부모 행을 먼저 삽입한 뒤 자식 행을 삽입한다. 삭제 시 연쇄 동작이 필요하면 제약 조건을 ON DELETE CASCADE 또는 ON DELETE SET NULL로 정의한다. 대량 로드에서는 부모-자식 순서로 데이터를 로드한다. 참조하는 행을 찾는다: SELECT * FROM child WHERE fk_column = value.