23503: foreign_key_violation
PostgreSQL¿Qué significa?
Se violó una restricción FOREIGN KEY. La fila padre referenciada por la fila insertada/actualizada no existe, o la fila padre que se elimina aún tiene filas hijas dependientes.
¿Por qué ocurre?
Un INSERT/UPDATE que referencia una clave padre inexistente, un intento de eliminar/actualizar una fila padre que aún está referenciada o datos cargados en el orden incorrecto (primero el hijo, luego el padre).
Cómo solucionarlo
Inserte primero la fila padre y luego la fila hija. Si se necesita un comportamiento en cascada al eliminar, defina la restricción con ON DELETE CASCADE u ON DELETE SET NULL. En cargas masivas, cargue los datos en orden padre-hijo. Encuentre las filas que hacen referencia: SELECT * FROM child WHERE fk_column = value.