Jim*_*m B 61 sql sql-server alter-table alter-column
今天我遇到了一个旧表,其中一个名为"Created"的日期时间列允许空值.现在,我想要更改它,使其为NOT NULL,并且还包含一个约束以添加默认值(getdate()).
到目前为止,我已经得到了以下脚本,只要我事先清理了所有空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
Run Code Online (Sandbox Code Playgroud)
有没有办法在ALTER语句中同时指定默认值?
Abe*_*ler 87
我想你需要做三个单独的陈述.我一直在环顾四周,我所看到的一切似乎都建议你如果要添加一个列就可以这样做,但如果你正在改变一个列则不行.
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
Run Code Online (Sandbox Code Playgroud)
Gag*_*age 10
您可能必须先将所有空值记录更新为默认值,然后使用alter table语句.
Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
Run Code Online (Sandbox Code Playgroud)
您需要执行两个查询:
一 - 将默认值添加到所需的列
ALTER TABLE 'Table_Name` 添加 DEFAULT 'value' FOR 'Column_Name'
我想为 Column IsDeleted 添加默认值,如下所示:
示例:ALTER TABLE [dbo].[Employees] ADD IsDeleted 默认为 0
二 - 将可空的列值更改为非空
ALTER TABLE 'table_name' ALTER COLUMN 'column_name' 'data_type' NOT NULL
我想让列 IsDeleted 不为空
ALTER TABLE [dbo].[Employees] 更改列 IsDeleted BIT NOT NULL