创建一个列并使其默认为值

时间:2011-10-08 19:46:34

标签: sql sql-server-2008

你好我的表中有一个类型为bit的列,我将为许多数据库运行一个脚本,检查它是否存在,如果它需要更改是并添加一个列并默认其位值默认为1

我试过以下但是当它创建了列时它仍然显示NULL我缺少什么?

ALTER TABLE [myTable] ADD [ShippingOption] [bit] NULL DEFAULT 1

谢谢

3 个答案:

答案 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;