gpt4 book ai didi

创建/更新日期的 SQL 时间戳

转载 作者:行者123 更新时间:2023-12-01 12:50:41 24 4
gpt4 key购买 nike

在一些经常写入的日志表中,我希望能够存储一个相对顺序,以便我可以在这些表之间进行联合,并获得实际发生的顺序。

DateTime2 的分辨率不足。几行将获得完全相同的日期,因此无法判断哪个先发生。因为排序应该跨多个表进行,所以按 Id 排序已经过时了。

然后我开始看时间戳。这适用于更新日期,但不适用于创建日期,因为每个表只能有一个时间戳列,并且它会自动更新。

这适用于 Microsoft Sql Server 2008。

有什么建议吗?

最佳答案

您可以使用另一列键入 binary(8)(与 rowversion 相同)并默认为 @@DBTS 来模拟它:

create table TX (
ID int not null,
Updated rowversion not null,
Created binary(8) not null constraint DF_TX_Created DEFAULT (@@DBTS)
)
go
insert into TX (ID)
values (1),(2)
go
update TX set ID = 3 where ID = 1
go
insert into TX (ID)
values (4)
go
select * from TX

结果:

ID          Updated            Created
----------- ------------------ ------------------
3 0x00000000000007D3 0x00000000000007D0
2 0x00000000000007D2 0x00000000000007D0
4 0x00000000000007D4 0x00000000000007D3

注意事项:

Created 值将始终等于最后分配的 rowversion 值,因此在某种意义上,与 Updated 值。

此外,来自单个语句的多个插入将收到相同 Created 值,而Updated 值将始终不同。

关于创建/更新日期的 SQL 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com