0

我正在编写一个部署脚本

  1. 创建一个默认值为 0 且可以为 Null 的新列
  2. UPDATE满足某个条件的列数据

另请注意,如果我在 INSERT 语句中将默认值显式设置为 0,则在更新数据时会收到相同的错误-

错误信息 -

列名“isConvertWithDivison”无效。

我正在使用的 SQL -

ALTER TABLE dbo.accountCurrencies 
    ADD isConvertWithDivison BIT NULL DEFAULT 0

UPDATE dbo.accountCurrencies SET  isConvertWithDivison = 1 WHERE  currencyName = 'USD'  

INSERT dbo.accountCurrencies 
        ( currencyName)
VALUES  ( 'AUD'),( 'DKK'),( 'RUB'),( 'SEK')

似乎很明显发生了什么,但我该如何解决这个问题?

在执行数据更改之前,我已经尝试过将新列提交到数据库,但仍然没有运气。

BEGIN TRANSACTION
    ALTER TABLE dbo.accountCurrencies 
        ADD isConvertWithDivison BIT NULL DEFAULT 0
COMMIT TRANSACTION

UPDATE dbo.accountCurrencies SET  isConvertWithDivison = 1 WHERE  currencyName = 'USD'  

INSERT dbo.accountCurrencies 
        ( currencyName)
VALUES  ( 'AUD'),( 'DKK'),( 'RUB'),( 'SEK')

仅供参考 - 运行 SQL 2008 R2

4

1 回答 1

1

在 alter 语句后使用 GO ,

ALTER TABLE dbo.accountCurrencies 
    ADD isConvertWithDivison BIT NULL DEFAULT 0

go

UPDATE dbo.accountCurrencies SET  isConvertWithDivison = 1 WHERE  currencyName = 'USD'  

go
INSERT dbo.accountCurrencies 
        ( currencyName)
VALUES  ( 'AUD'),( 'DKK'),( 'RUB'),( 'SEK')
于 2012-08-08T11:29:04.160 回答