sql - 设置更新 SQL Server 表中的行的默认日期
问题描述
我有一个带有 ID、City、CreateDate、UpdateDate 列的 SQL Server 表。每当创建新行时,都会添加默认值(这按预期工作)。就像新行的默认值一样,如何在更新行时设置默认日期,即如果我更新表格(如下所示),UpdateDate 应该有默认值 GetDate()。
CREATE TABLE TestTable
(
ID Int,
City Varchar(100),
CreateDate Datetime,
UpdateDate Datetime
);
ALTER TABLE TestTable
ADD CONSTRAINT [Constraint_CreateDate] DEFAULT (GETDATE()) FOR [CreateDate];
INSERT INTO TestTable (ID, City)
VALUES (1, 'DC');
UPDATE TestTable
SET City = 'NY'
WHERE ID = 1; -- How to populate the UpdateDate when this update happen.
解决方案
该DEFAULT
约束仅在插入新行时有效,并且没有声明性方式来定义更新的默认值。你只需要在你的UPDATE
声明中明确地做到这一点:
UPDATE TestTable
SET City = 'NY',
UpdateDate = SYSDATETIME()
WHERE ID = 1;
推荐阅读
- css - Chrome中的剪辑路径水平白线
- javascript - 用于 Angular 测试的 JS 堆内存不足
- javascript - 如果不在焦点上,Google 自动完成输入不起作用
- linux - 过滤命令输出并将其保存在 Json 格式列表中的 Shell 脚本
- angular - 具有材料组件的角度形式更改事件
- javascript - 每次表更改时执行 JavaScript 代码
- python - 使用 Python ruamel.yaml,在往返模式下加载时丢失锚点?
- ruby-on-rails - 将数据移动到 ruby 循环内的 3 个单独的哈希中
- php - 如何定义字段特定的错误消息或覆盖 Laravel 5.5 中 FormRequest 中使用的自定义验证规则的默认错误消息
- r - 取消列出不同长度列表的列表