Грешките, които възникват в резултат на пакетно прекомпилиране след отложено разрешаване на имена, не могат да бъдат уловени на същото ниво, на което възниква грешката. Едно заобиколно решение е да обвиете 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;