今天我遇到了一个旧表,其中有一个名为"Created"的datetime列,它允许空值.现在,我想更改它,使其不为NULL,并包含一个用于添加默认值(getdate())的约束.

到目前为止,我已经有了以下脚本,只要我事先清除了所有的空值,它就可以正常工作:

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

有没有办法也在ALTER语句中指定默认值?

推荐答案

我认为你需要把这作为三个独立的声明来做.我一直在四处寻找,我看到的一切似乎都表明,如果你是adding个专栏,你可以这样做,但如果你正在修改一个.

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 

Sql相关问答推荐

Postgresql -如何计算刷卡和刷卡时间

如何查询一个名称是根据PL/pgSQL函数结果构建的表?

如何并行SELECT和RESET?

使用`lag()`获取上一个时间戳

解析SQL Server中的嵌套JSON

PostgreSQL基于2个COLS的任意组合 Select 唯一行

如果元素包含通过SQL指定的字符串,则过滤掉数组元素

检索上一个星期四和上一个星期三

在SQL中返回缺省值,即使查询不返回任何结果

SQL子查询返回多个值错误

找到最新的连线

Oracle分层查询-两条路径在末尾合并为一条

如何在MS Access中基于另外两个表自动填充一个表中的字段?

向表中添加新列取决于表的日期列(unpivot)

Postgresql 具有相似行为和模式行为的问题

在presto sql中解析带有区域的时间格式

如何根据共同列值从两个表中包含列,但只包含左表中的行

正则表达式忽略特定数据部分的分隔符

在 SQL 中使用循环遍历按时间顺序排列的数据

具有日期时间条件的存储过程