有什么方法可以在SQL Server中自动更新修改的日期时间。
我不想使用触发器。我也想避免在调用SQL查询时通过应用程序提供值。
在SQL或Dapper等程序中是否有任何支持。
答案 0 :(得分:2)
如果要跟踪数据库中的更改,可以使用一个称为
的功能。系统版本的时间表,如here所述。
使用时间表,除了能够查询该行的完整历史记录之外,您还可以照常查询该行的最新状态
如果您有兴趣保留数据更改历史记录,这将非常方便
答案 1 :(得分:0)
如果要完全在SQL Server端处理此问题,则实际上与Dapper或Dapper扩展无关。看起来您正在寻找的方法是行版本控制。
您可以考虑使用rowversion(不建议使用旧的timestamp
)数据类型,如here所述。它会自动填充值,无需从应用程序输入。
是一种数据类型,它公开了数据库中自动生成的唯一二进制数。 rowversion通常用作版本标记表行的机制。存储大小为8个字节。 rowversion数据类型只是一个递增数字,并不保留日期或时间。要记录日期或时间,请使用datetime2数据类型。
如上面引文和评论中所述,实际上这不是每个发言者的约会时间。
答案 2 :(得分:0)
我可以使用临时表解决问题。我不确定这是否是一个优雅的解决方案。这是我的解决方法。
创建表:
CREATE TABLE extable4 (PriKey int PRIMARY KEY, ColValue varchar(200)
, [ModifiedDateTime] datetime2 (2) GENERATED ALWAYS AS ROW START
, [ModifiedExpiryDateTime] datetime2 (2) GENERATED ALWAYS AS ROW END HIDDEN
, PERIOD FOR SYSTEM_TIME (ModifiedDateTime,[ModifiedExpiryDateTime])
) ;
插入一条记录,但不向ModifiedDatetime提供输入。
insert into extable4(PriKey,ColValue) values(1,'Ver 1');
ModifiedDateTime填充了systime。
update extable4 set ColValue='Ver 1.1' where PriKey=1;
ModifiedDateTime现在更新了。 :)