使用在“查询/运行时”创建的列插入或更新数据时出错

时间:2012-08-08 11:24:48

标签: sql sql-server sql-server-2008 tsql

我正在编写

的部署脚本
  1. 创建一个默认值为0的新列,并且为Null-able
  2. 更新满足特定条件的列数据
  3. 另请注意,如果我在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')
    

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

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

    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

1 个答案:

答案 0 :(得分:1)

在alter statement,

之后使用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')