Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Най-добрият начин за улавяне на нарушения на уникалните ограничения на sql в C# по време на вмъквания

Това, което търсите, е SqlException, по-специално нарушението на ограниченията на първичния ключ. Можете да извадите тази конкретна грешка от това изключение, като разгледате свойството number на изхвърленото изключение. Този отговор вероятно е подходящ за това, от което се нуждаете:Как да идентифицирате дублирането на първичния ключ от код за грешка на SQL Server 2008?

Накратко, изглежда така:

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

РЕДАКТИРАНЕ:

Това може да е малко хакерско, но можете също така просто да проверите компонента на съобщението на изключението. Нещо като това:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да приложите условно форматиране към число в SQL Server с помощта на FORMAT()

  2. Поправете съобщение 8116 „Типът на данни за аргумента varchar е невалиден за аргумент 1 на функцията session_context“ в SQL Server

  3. Как да намеря работещ порт на SQL Server?

  4. Агрегация на низове през годините в SQL Server

  5. Как мога да вляза и да намеря най-скъпите заявки?