Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il modo migliore per rilevare le violazioni dei vincoli univoci di sql in c# durante gli inserimenti

Quello che stai cercando è una SqlException, in particolare la violazione dei vincoli della chiave primaria. È possibile ottenere questo errore specifico da questa eccezione esaminando la proprietà number dell'eccezione generata. Questa risposta è probabilmente rilevante per ciò di cui hai bisogno:come identificare la duplicazione della chiave primaria da un codice di errore di SQL Server 2008?

In sintesi, si presenta così:

// 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
   }
}

MODIFICA:

Questo potrebbe essere un po 'complicato, ma potresti anche semplicemente ispezionare il componente del messaggio dell'eccezione. Qualcosa del genere:

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