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

Грешка при промяна на таблицата на SQL Server не може да бъде уловена

Грешките, които възникват в резултат на пакетно прекомпилиране след отложено разрешаване на имена, не могат да бъдат уловени на същото ниво, на което възниква грешката. Едно заобиколно решение е да обвиете DDL в динамичен SQL:

BEGIN TRY
    EXEC(N'ALTER TABLE [dbo].[my_table_name] ADD PRIMARY KEY ([id]);');
END TRY
BEGIN CATCH
    IF ERROR_NUMBER() = 1779
    BEGIN
        --handle expected errors
        PRINT 'Primary Key already exists. ';
    END
    ELSE
    BEGIN
        --raise other unexpected errors
        THROW;
    END;
END CATCH;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ако е в рамките на CTE?

  2. Как да направите ЛЯВО ПОЛУ ПРИСЪЕДИНЕНИЕ в SQL Server

  3. SQL Server, еквивалентен на ORACLE INSTR

  4. TransactSQL, за да стартирате друг TransactSQL скрипт

  5. Съхранение на файлове в SQL Server