使用默认值将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