23503: foreign_key_violation
PostgreSQLЧто это значит?
Нарушено ограничение FOREIGN KEY. Родительская строка, на которую ссылается вставленная/обновлённая строка, не существует, или у удаляемой родительской строки ещё есть зависимые дочерние строки.
Почему возникает?
INSERT/UPDATE со ссылкой на несуществующий родительский ключ, попытка удалить/обновить родительскую строку, на которую ещё есть ссылки, или загрузка данных в неверном порядке (сначала дочерние, затем родительские).
Как исправить
Сначала вставьте родительскую строку, затем дочернюю. Если при удалении нужно каскадное поведение, определите ограничение с ON DELETE CASCADE или ON DELETE SET NULL. При массовой загрузке загружайте данные в порядке родитель — потомок. Поиск ссылающихся строк: SELECT * FROM child WHERE fk_column = value.