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

No se puede detectar el error de la tabla de modificación de SQL Server

Los errores que se producen como resultado de la recompilación por lotes después de la resolución de nombres diferida no se pueden detectar en el mismo nivel en el que se produce el error. Una solución es envolver el DDL en SQL dinámico:

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;