你好我的表中有一个类型为bit的列,我将为许多数据库运行一个脚本,检查它是否存在,如果它需要更改是并添加一个列并默认其位值默认为1
我试过以下但是当它创建了列时它仍然显示NULL我缺少什么?
ALTER TABLE [myTable] ADD [ShippingOption] [bit] NULL DEFAULT 1
谢谢
答案 0 :(得分:4)
只需使用WITH VALUES
让新列取default
值而不是NULL
ALTER TABLE [myTable]
ADD [ShippingOption] [bit] NULL DEFAULT 1 WITH VALUES;
如果新添加的列标记为NOT NULL
,则不需要这样做。在这种情况下,默认将自动应用。
答案 1 :(得分:1)
当默认约束应用于可空列时(例如在这种情况下),当列名从列表中排除时,默认值仅应用于插入。
通常,在创建字段时不适用。 修改但是,正如Martin所指出的那样,通过添加WITH VALUES
可以获得所需的效果。
答案 2 :(得分:0)
听起来您已使用默认值创建了列。如果未指定,所有未来的插入都将使用此默认值。
你说“它仍显示NULL
”。您需要更新现有记录:
UPDATE myTable
SET ShippingOption = 1
WHERE ShippingOption IS NULL;
您的默认设置不适用的原因:您的列仍然可以为空。因此,在创建时,不需要应用默认值。
您也可以在NOT NULL
语句中指定该列为ALTER
。这将确保在不要求您发出UPDATE
的情况下应用默认值,并确保在插入时任何语句都需要非NULL值:
ALTER TABLE [MyTable] ADD [ShippingOption] [bit] NOT NULL DEFAULT 1;