今天,我遇到了一个旧表,其中有一个名为“ Created”的日期时间列,该列允许为空。现在,我想更改它,使其不是NOT NULL,并且还包含一个约束以添加默认值(getdate())。
到目前为止,我已经有了以下脚本,只要我事先清除了所有空值,该脚本就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
有没有办法在ALTER语句上也指定默认值?
Answers:
我认为您将需要作为三个单独的语句来执行此操作。我一直在环顾四周,我所看到的一切似乎都建议您添加列即可,但如果要更改列则不能。
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
您需要执行两个查询:
一-将默认值添加到所需的列
ALTER TABLE'Table_Name`为'Column_Name'添加默认'值'
我想为列IsDeleted添加默认值,如下所示:
示例:ALTER TABLE [dbo]。[Employees]添加IsDeleted的默认0
二-将可为空的列值更改为不为null
ALTER TABLE'table_name'ALTER COLUMN'column_name''data_type'非空
我想使IsDeleted列不为null
ALTER TABLE [dbo]。[Employees]更改列IsDeleted BIT NOT NULL
如果是SQL Server,则可以在设计视图中的列属性上进行操作
尝试这个?:
ALTER TABLE dbo.TableName
ADD CONSTRAINT DF_TableName_ColumnName
DEFAULT '01/01/2000' FOR ColumnName