【问题标题】:SQL 2016 - Memeory Optimized Table - Row updated since SELECTSQL 2016 - 内存优化表 - 自 SELECT 以来更新的行
【发布时间】:2023-04-04 06:30:02
【问题描述】:

在我当前的应用程序(使用 SQL 2008)中,我们在每个表中都使用了 TimeStamp 列。当应用程序读取一行数据时,我们将时间戳值与数据一起发送。当他们尝试保存任何更改时,我们会比较时间戳列,以查看该行在读取后是否被其他人修改。如果有更改,我们会拒绝更新并告诉他们刷新数据并重试,以便他们可以看到更改的内容,并确保他们不会在不知情的情况下覆盖任何重要的内容。如果时间戳匹配,则我们允许更新并向他们发送新的时间戳(以防他们想要进行更多更改)。

在 SQL 2016 内存优化表中,它们不再支持此列类型。他们确实有很棒的行版本控制,但是有没有办法在创建记录时提取“时间戳”,以便我们可以以相同的方式使用它?有没有我们可以使用的新方法?

感谢您提供的任何帮助。

【问题讨论】:

    标签: sql-server-2016


    【解决方案1】:

    您可以在表中添加一个 ROWVERSION 列吗?或者如果你只 需要它来满足对正确格式的列的需求,并且 实际上不需要版本控制,您可以只生成一列 在飞行中。由于 TIMESTAMP(现在被 ROWVERSION 取代)是 VARBINARY(8) 您可以将您的 Timestamp 列转换为此 - SELECT [Timestamp] = CONVERT(VARBINARY(8), Timestamp_S) – GarethD 2016 年 12 月 12 日 13:09

    这是从SQL Server 2016 timestamp data type 获取的,也许可以提供帮助?

    【讨论】:

    • 问题是我不相信内存优化表支持 rowversion/timestamp 数据类型。 (内存优化表不支持“时间戳”类型。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多