Как добавить столбец перед запуском этой команды в t-sql? - PullRequest
1 голос
/ 13 октября 2011

Мне нужно написать скрипт для обновления базы данных, но у меня проблемы с этим.T-Sql

BEGIN TRY

    BEGIN TRANSACTION 

        ALTER TABLE company
        ADD RegistrationNumber nvarchar(50)

    COMMIT

END TRY
BEGIN CATCH
  IF(@@trancount > 0)
    ROLLBACK TRANSACTION 
END CATCH



update Company set RegistrationNumber = ''

Но я получаю сообщение об ошибке

Неверное имя столбца 'RegistrationNumber'.

Однако, когда я запускаю первыйбит потом второй бит у меня нет проблем .... как мне все это объединить в один скрипт?

1 Ответ

2 голосов
/ 13 октября 2011

Когда анализатор анализирует ваш запрос, поле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...