如何更改sql server中的默认列值

Posted

技术标签:

【中文标题】如何更改sql server中的默认列值【英文标题】:How to change the Default Column value in sql server 【发布时间】:2014-10-01 07:45:45 【问题描述】:

在更改表格时,我将“1”设为默认值。现在我需要重置默认值“0”。我尝试了以下脚本,但它引发了错误。

ALTER TABLE Order ADD Cancel BIT CONSTRAINT [DF_Order_Cancel] DEFAULT ((1)) NOT NULL;

这里我需要将默认值重置为“0”而不是“1”。

我尝试了下面的脚本,但它仍然抛出错误。

ALTER TABLE Order ADD DEFAULT (0) FOR Cancel

【问题讨论】:

您应该提供给定的错误。 “TABLE”约束定义的语法不正确。 【参考方案1】:

首先,删除约束。

alter table Order drop constraint DF_Order_Cancel

然后重新创建它。

ALTER TABLE Order ADD DEFAULT 0 FOR Cancel

编辑:以下语句运行良好。

ALTER TABLE Order ADD Cancel BIT CONSTRAINT [DF_Order_Cancel] DEFAULT ((1)) NOT NULL;
alter table Order drop constraint DF_Order_Cancel
ALTER TABLE Order ADD DEFAULT 0 FOR Cancel

【讨论】:

我放弃了约束并尝试更改默认值,但没有发生... 我还有一些错误...列已经绑定了一个 DEFAULT。 有时我会这样解决方案是什么 你试过我的3行代码了吗?或者至少是 #2 和 #3? 我试过了,这很好,感谢您的回答..但我的条件很少没有限制它在那里......我已经发布在上面所以在这种情况下我怎么能解决这个问题。 【参考方案2】:

您需要获取约束名称。执行下面的代码,在结果中可以看到约束名称。

sp_helpconstraint tableName

获得约束名称后,您可以使用此代码更改列的默认值:

alter table tableName
drop constraint constraintName
go
alter table tableName
add constraint df_tableName_columnName default 0 for columnName
go

【讨论】:

以上是关于如何更改sql server中的默认列值的主要内容,如果未能解决你的问题,请参考以下文章

当列值更改时,如何将组号添加到 SQL Server 2012 中的顺序记录?

如何从SQL中的列值中提取特定部分(Redshift平台)

SQL 查询:如何在排名列值中使用时间戳列

oracle中如何取消列值中的空格

oracle中如何取消列值中的空格

(Python)如何修复数据框列值中的数值表示错误