Identificar qué valor de una de varias hileras insertos falla restricción de clave externa

StackOverflow https://stackoverflow.com/questions/2672147

  •  28-09-2019
  •  | 
  •  

Pregunta

Tengo un multi-fila de inserción que se ve algo como:

insert into table VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9);

Suponga que el primer atributo (1, 4, 7) es una clave externa a otra mesa y asumir que esta tabla de referencia no tiene el valor '4'. Un MySQLExeption se lanza con código de error 1452.

Excepción: No se puede agregar o actualizar una fila secundaria: una restricción de clave externa falla (dbName/tableName, CONSTREÑIMIENTO id EXTERIOR CLAVE (customer_id) REFERENCIAS referencedTable (customer_id))

¿Hay una manera de identificar el valor que ha provocado el error? Me gustaría dar mi usuario un mensaje de error que dice algo como:

Error: '4' does not exist in the referenced table. 

Estoy utilizando el conector .NET MySQL para ejecutar el inserto.

Gracias -

Jonathan

¿Fue útil?

Solución

Una opción podría ser para consultar la tabla que se hace referencia en primer lugar.

select id from referencedTable where id not in (1, 4, 7)

Parece que debe haber una forma más limpia ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top