将可为 Null 的列更改为具有默认值的 NOT NULL

问题描述 投票:0回答:5

我今天遇到了一个旧表,其中有一个名为“Created”的日期时间列,它允许空值。现在,我想更改它,使其不为 NULL,并且还包含一个添加默认值 (getdate()) 的约束。

到目前为止,我已经得到了以下脚本,只要我事先清理了所有空值,它就可以正常工作:

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

有没有办法在 ALTER 语句上也指定默认值?

sql sql-server default-value alter-table alter-column
5个回答
110
投票

我认为您需要将其作为三个单独的语句来执行。我环顾四周,我所看到的一切似乎都表明,如果您要“添加”一列,则可以做到这一点,但如果您要更改一列,则不行。 ALTER TABLE dbo.MyTable ADD CONSTRAINT my_Con DEFAULT GETDATE() for created UPDATE MyTable SET Created = GetDate() where Created IS NULL ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL



13
投票

Update dbo.TableName Set Created="01/01/2000" where Created is NULL



10
投票

一 - 将默认值添加到所需列

更改表“表名称”为“列名称”添加默认“值”

我想向 Column IsDeleted 添加默认值,如下所示:

示例:ALTER TABLE [dbo].[Employees] ADD IsDeleted 默认为 0

二 - 将可为空的列值更改为不为空

ALTER TABLE '表名' ALTER COLUMN '列名' '数据类型' NOT NULL

我想让 IsDeleted 列不为空

ALTER TABLE [dbo].[Employees] 更改列 IsDeleted BIT NOT NULL


3
投票

试试这个:

ALTER TABLE dbo.TableName ADD CONSTRAINT DF_TableName_ColumnName DEFAULT '01/01/2000' FOR ColumnName



1
投票

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

© www.soinside.com 2019 - 2024. All rights reserved.