Когда анализатор анализирует ваш запрос, поле RegistrationNumber
не существует (пока) и поэтому сообщает об ошибке; потребуется намного более сложный синтаксический анализатор, чтобы распознать, что вы создаете его ранее в запросе.
Разделите два запроса с помощью GO
, и они будут проанализированы / выполнены индивидуально, что должно избежать ошибки.
BEGIN TRY
BEGIN TRANSACTION
ALTER TABLE company
ADD RegistrationNumber nvarchar(50)
COMMIT
END TRY
BEGIN CATCH
IF(@@trancount > 0)
ROLLBACK TRANSACTION
END CATCH
GO -- << Add this
UPDATE Company SET RegistrationNumber = ''
РЕДАКТИРОВАТЬ: Если вы хотите, чтобы оба шага выполнялись за один раз, почему бы просто не использовать значение по умолчанию для нового столбца?
BEGIN TRY
BEGIN TRANSACTION
ALTER TABLE company
ADD RegistrationNumber nvarchar(50) DEFAULT ''
COMMIT
END TRY
BEGIN CATCH
IF(@@trancount > 0)
ROLLBACK TRANSACTION
END CATCH