[英]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.