sql >> Base de Datos >  >> RDS >> Sqlserver

La mejor manera de detectar violaciones de restricciones únicas de SQL en C# durante las inserciones

Lo que está buscando es una SqlException, específicamente la violación de las restricciones de clave principal. Puede obtener este error específico de esta excepción observando la propiedad de número de la excepción lanzada. Esta respuesta probablemente sea relevante para lo que necesita:¿Cómo identificar la duplicación de clave principal a partir de un código de error de SQL Server 2008?

En resumen, se ve así:

// put this block in your loop
try
{
   // do your insert
}
catch(SqlException ex)
{
   // the exception alone won't tell you why it failed...
   if(ex.Number == 2627) // <-- but this will
   {
      //Violation of primary key. Handle Exception
   }
}

EDITAR:

Esto puede ser un poco complicado, pero también podría simplemente inspeccionar el componente de mensaje de la excepción. Algo como esto:

if (ex.Message.Contains("UniqueConstraint")) // do stuff