我今天遇到了一张旧表,其中有一个名为“Created”的日期时间列,它允许空值。现在,我想更改它以使其不为 NULL,并且还包括一个要添加默认值 (getdate()) 的约束。
到目前为止,我已经有了以下脚本,只要我事先清理了所有空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
有没有办法在 ALTER 语句中也指定默认值?
我今天遇到了一张旧表,其中有一个名为“Created”的日期时间列,它允许空值。现在,我想更改它以使其不为 NULL,并且还包括一个要添加默认值 (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
您需要执行两个查询:
一 - 将默认值添加到所需的列
更改表“表名”为“列名”添加默认“值”
我想为列 IsDeleted 添加默认值,如下所示:
示例: ALTER TABLE [dbo].[Employees] 添加 IsDeleted 的默认值 0
二 - 将可以为空的列值更改为不为空
ALTER TABLE 'table_name' ALTER COLUMN 'column_name' 'data_type' NOT NULL
我想让列 IsDeleted 不为空
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
试试这个
ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;