使用默认值将Nullable列更改为NOT NULL

今天我碰到一个旧桌子,里面有一个名为“Created”的date时间列,它允许空值。 现在,我想改变这个,以便它不是NULL,还包括一个约束来添加一个默认值(getdate())。

到目前为止,我已经得到了下面的脚本,如果我事先清除了所有的空值,

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

有什么办法也可以在ALTER语句中指定默认值?

我想你需要做三个单独的陈述。 我一直在四处看看,我所看到的一切都似乎build议你可以做,如果你正在添加一个列,但不是如果你正在改变一个。

 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 

您可能必须首先将空的所有logging更新为默认值,然后使用alter table语句。

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

如果它的SQL Server可以在devise视图中的列属性上执行它

尝试这个?:

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

你需要执行两个查询:

一个 – 将默认值添加到所需的列

ALTER TABLE'Table_Name` ADD DEFAULT'value'FOR'Column_Name'

我想添加默认值列IsDeleted如下:

示例:ALTER TABLE [dbo]。[Employees]为IsDeleted添加默认值0

两个 – 将列值可更改为不为null

ALTER TABLE'table_name'ALTER COLUMN'column_name''data_type'NOT NULL

我想让列IsDeleted为非空

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