我必须编写一个脚本来更新数据库,但我遇到了问题。 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'无效。
然而,当我运行第一位然后第二位我没有遇到问题....我怎么把它全部放到一个脚本中?
答案 0 :(得分:2)
当解析器分析您的查询时,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