今天我遇到一张旧表,其中有一个日期时间列名为'Created',允许为空。现在,我希望将其更改为非空,并添加一个约束以设定默认值(getdate())。
到目前为止,我已经得到了以下脚本,只要我事先清理了所有的空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
在ALTER语句中,有没有办法同时指定默认值呢?
今天我遇到一张旧表,其中有一个日期时间列名为'Created',允许为空。现在,我希望将其更改为非空,并添加一个约束以设定默认值(getdate())。
到目前为止,我已经得到了以下脚本,只要我事先清理了所有的空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
在ALTER语句中,有没有办法同时指定默认值呢?
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语句。
Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
您需要执行两个查询:
第一个 - 将默认值添加到所需列中
ALTER TABLE 'Table_Name' ADD DEFAULT 'value' FOR 'Column_Name'
例如:我想将默认值添加到Column IsDeleted中,如下所示:
ALTER TABLE [dbo].[Employees] ADD Default 0 for IsDeleted
第二个 - 将列值从可空更改为非空
ALTER TABLE 'table_name' ALTER COLUMN 'column_name' 'data_type' NOT NULL
例如:我想将列IsDeleted更改为非空
ALTER TABLE [dbo].[Employees] Alter Column IsDeleted BIT NOT NULL
ALTER TABLE dbo.TableName
ADD CONSTRAINT DF_TableName_ColumnName
DEFAULT '01/01/2000' FOR ColumnName
试试这个
ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;