- Software y sistemas
- Base de datos
23503
PostgreSQL 23503 en base de datos: la clave foránea no tiene fila de referencia
Evidencia vinculada a esta decisión
Ver fuente: PostgreSQL 18 Appendix A: Error CodesNivel de riesgo
Precaución
Actúa con cuidado; puede requerir técnico si persiste.
Urgencia
Media — atiéndelo hoy
Respuesta rápida
La operación rompe una relación entre tablas: una fila apunta a otra que no existe, o se intenta borrar una fila que otras siguen usando. Revisa la restricción y la tabla que nombra el error y comprueba qué fila falta o qué filas dependen de ella.
Seguridad primero
Antes de continuar
- No cambies la restricción a CASCADE solo para que el borrado pase: borrará también todas las filas dependientes.
Puedes hacerlo con seguridad
- Restricción, tabla y tipo de operación
- Existencia del padre o de las dependientes
Deja estas tareas a un profesional cualificado
- No intentes esta tarea profesional: Ordenar las operaciones o corregir el dato
- No intentes esta tarea profesional: Revisar la acción ON DELETE con el responsable de los datos
Lo que un técnico debe poder justificar
Viene un técnico
Estos son los pasos que tiene que hacer y enseñarte. Márcalos mientras trabaja: si se salta pasos, no aceptes el cambio de pieza.
No son instrucciones para que abras o manipules el equipo. Son las comprobaciones que deben sostener una conclusión técnica.
Ordenar las operaciones o corregir el dato
Qué haceEl desarrollador inserta primero el padre y luego la hija, o corrige el valor de la clave.
Te tiene que enseñarel orden de las sentencias.
Por escritola prueba que ya no falla.
Revisar la acción ON DELETE con el responsable de los datos
Qué haceSi el borrado debe arrastrar dependientes, el equipo valora cambiar la acción a CASCADE o SET NULL con una migración revisada.
Te tiene que enseñarla definición actual y la propuesta.
Por escritola aprobación.
Antes de aceptar una pieza o reparación
Aún no ha demostrado nada. No aceptes un cambio de pieza solo por el código.
Sigue estos pasos
Aviso: Sigue el orden documentado. Un código identifica el sistema afectado, pero por sí solo no demuestra qué pieza está averiada.
Restricción, tabla y tipo de operación
- Quién:
- tú, como desarrollador.
- Cómo:
- lee Constraint name, Table name y Detail del error, y anota si la sentencia era INSERT, UPDATE, DELETE o el COMMIT.
- Resultado que importa:
- qué relación falla y en qué dirección.
- Si fue INSERT o UPDATE en la hija:
- apunta a un padre que falta; compruébalo.
- Si fue DELETE o UPDATE en el padre:
- indica filas dependientes; búscalas antes de decidir.
- Evidencia a conservar:
- campos del error, sentencia y hora.
Evidencia: PostgreSQL error and notice fields · PostgreSQL constraints
Existencia del padre o de las dependientes
- Quién:
- tú, como desarrollador.
- Cómo:
- consulta en modo lectura la tabla referenciada por el valor de la clave, o la tabla hija por el valor del padre que intentas borrar.
- Resultado que importa:
- si el padre existe o cuántas filas dependen de él.
- Si el padre no existe:
- confirma el dato incorrecto o un orden de inserción equivocado.
- Si hay dependientes:
- confirma que el borrado debe decidirse (conservar, reasignar o borrar en cascada).
- Evidencia a conservar:
- resultado de la consulta.
Solo lectura. No borres filas dependientes para desbloquear el borrado: no lo hagas sin el responsable de los datos.
Evidencia: PostgreSQL constraints
Situación no resuelta
Si el error persiste, no sigas probando por tu cuenta. Mira qué tiene que hacer y enseñarte el técnico.
Técnico virtual
¿Sigue apareciendo 23503 tras comprobarlo?
Este recorrido usa el código exacto y tus respuestas para elegir una prueba, su resultado esperado y la siguiente bifurcación.
Dónde se aplica este código
Un código solo tiene significado dentro del producto y la versión correctos.
Ámbito principal
- Sistema
- Software y sistemas
- Marca
- PostgreSQL
- Tipo de producto
- Base de datos
Variantes conocidas del código
- foreign_key_violation
- PostgreSQL 23503
- SQLSTATE 23503
Qué significa
El apéndice A asigna 23503 a foreign_key_violation, en la clase 23. Una clave foránea exige que los valores de unas columnas coincidan con los de alguna fila de otra tabla. Con la acción por defecto ON DELETE NO ACTION, borrar una fila referenciada suele dar error; CASCADE borra también las dependientes. Si la restricción es diferible, la comprobación puede hacerse al final de la transacción. El código dice qué relación se rompió, no si el fallo está en la fila hija o en el borrado del padre.
Advertencias y condiciones de parada
- Precauciónadvertencia editorial
No cambies la restricción a CASCADE solo para que el borrado pase: borrará también todas las filas dependientes.
Evidencia: PostgreSQL constraints
Síntomas y causas
Causas probables · en orden
- Fila hija que apunta a un padre inexistenteFrecuente
Se inserta o modifica una fila con un valor que no existe en la tabla referenciada. Ocurre en INSERT o UPDATE de la tabla hija.
Evidencia: PostgreSQL constraints
- Borrado o cambio de un padre con filas dependientesFrecuente
Se borra o cambia una fila que otras referencian y la acción configurada no lo permite. Ocurre en DELETE o UPDATE de la tabla padre.
Evidencia: PostgreSQL constraints
- Comprobación diferida al confirmarPosible
La restricción es DEFERRABLE INITIALLY DEFERRED y el error salta en el COMMIT, lejos de la sentencia que lo causó.
Evidencia: PostgreSQL 18 SET CONSTRAINTS
Fuentes y referencias técnicas
- 1
PostgreSQL 18 Appendix A: Error Codes
PostgreSQL Global Development Group · 2026 · official_doc
- 2
PostgreSQL Global Development Group · 2026 · official_doc
¿Te ha resultado útil esta ficha?