Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Impossible d'attraper l'erreur de modification de table SQL Server

Les erreurs qui se produisent à la suite d'une recompilation par lots après une résolution de nom différée ne peuvent pas être interceptées au même niveau que celui où l'erreur s'est produite. Une solution consiste à encapsuler le DDL dans du SQL dynamique :

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;