簡體   English   中英

SQLite 行數據的邏輯時鍾,例如 SQL 服務器中的 rowversion

[英]SQLite logical clock for row data like rowversion in SQL Server

SQLite 是否有類似 SQL 服務器的rowversion 列,每次行更改時都會增加? 本質上,我希望每個表都有一個邏輯時鍾,每當表更新時都會更新。 有了這個邏輯時鍾,我的應用程序可以保存它最近看到的版本,並且只有在數據發生變化時才能重新獲取。

我可以用類似的東西來實現它:

CREATE TRIGGER FOO_VERSION_INSERT_TRIGGER 
  AFTER INSERT ON FOO FOR EACH ROW
  BEGIN
    UPDATE CLOCKS
    SET VERSION = (
      SELECT IFNULL(MAX(VERSION), 0) + 1 FROM CLOCKS
    )
    WHERE TABLE_NAME = "FOO"
  END

CREATE TRIGGER FOO_VERSION_UPDATE_TRIGGER 
  AFTER UPDATE ON FOO FOR EACH ROW
  BEGIN
    UPDATE CLOCKS
    SET VERSION = (
      SELECT IFNULL(MAX(VERSION), 0) + 1 FROM CLOCKS
    )
    WHERE TABLE_NAME = "FOO"
  END

CREATE TRIGGER FOO_VERSION_DELETE_TRIGGER 
  AFTER INSERT ON FOO FOR EACH ROW
  BEGIN
    UPDATE CLOCKS
    SET VERSION = (
      SELECT IFNULL(MAX(VERSION), 0) + 1 FROM CLOCKS
    )
    WHERE TABLE_NAME = "FOO"
  END

但這似乎本來就應該存在。

您可以使用PRAGMA data_version查看是否有任何其他與數據庫的連接修改了它,因此您的程序需要刷新數據。

如果在此期間通過任何其他連接將更改提交到數據庫,則從同一連接兩次調用“PRAGMA data_version”返回的 integer 值將不同。

但是,它不會告訴您更改了哪些特定表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM