sql设置默认值getdate()时,是否在运行update语句时设置了值?

Kid*_*ddo -1 sql t-sql

我知道当你在db中插入一个值时,它会将该列值设置为当前日期时间,当你运行更新语句时它是否适用于它?

例如

表模式:

Id, Name, CreatedDate(getdate())
Run Code Online (Sandbox Code Playgroud)

当我插入表格时id = 1 , name = 'john',它将设置createdDate = current date

如果我运行更新声明

update table set name="john2" where id =1
Run Code Online (Sandbox Code Playgroud)

它会更新createdDate吗?

Aar*_*and 6

不,DEFAULT CONSTRAINT仅在INSERT上调用,并且仅在(a)与NOT NULL约束或(b)使用DEFAULT VALUES组合时调用.对于UPDATE,SQL Server根本不会查看您的DEFAULT CONSTRAINT.目前您需要一个触发器(请参阅如何在SQL Server 2008 R2表中添加"上次更新"列?),但是有多个内置此功能的请求 - 请考虑投票和评论:

http://connect.microsoft.com/sql/feedback/details/355461

http://connect.microsoft.com/sql/feedback/details/406485