如何在SQL Server中更改默认列值

5

在我修改表格时,我将默认值设为了“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

你应该提供给定的错误。 - Francois
'TABLE' 约束的定义语法不正确。 - RickyRam
2个回答

9

首先,删除约束。

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

我删除了约束并尝试更改默认值,但没有发生任何变化... - RickyRam
我还遇到了一些错误...该列已经有一个默认值绑定。 - RickyRam
有时我会遇到这种情况,我该如何更改... 在需要将默认值从'1'更改为'0'时,解决方案是:ALTER TABLE Order ADD DEFAULT ((0)) FOR [Cancel]。 - RickyRam
你试过我的三行代码了吗?或者至少试了第二和第三行吗? - Francois
我尝试了,没问题,谢谢你的回答。但是我的一些条件没有限制,就像我在顶部发布的那样,那么在这种情况下,我该如何解决这个问题呢? - RickyRam
第一次运行脚本并写入“drop constraint”,则会出现错误,因为没有可用的约束。因此,您需要首先检查约束是否存在,然后再删除约束。例如:alter table [PhotoGallery] drop constraint IF EXISTS DF_PhotoGallery_IsDeleted - A.M. Patel

3

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

sp_helpconstraint tableName

在获取约束名之后,您可以使用以下代码更改列的默认值:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接