我有4张汽车注册表和每张汽车的一些数据 我需要为SQLite的每次注册选择最新更改的行,你能帮助我吗?
亲切的问候 菲利普
答案 0 :(得分:0)
如果您在当前连接打开时进行了最新更改,则可以使用last_insert_rowid()函数进行插入,或使用whereClause进行更新,如this post.中所述
如果您已经关闭了连接,或者想要在进行更改后的任何时间选择最新更改的行,则必须使数据库记住最后更改了哪一行。以下是使用时间戳的示例:
让我们考虑以下架构。
CREATE TABLE car (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT,
last_change TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
现在,last_change将被设置为插入新行时的创建时间。
我们仍然需要在每个UPDATE查询上更新last_change,所以让我们为它创建一个触发器。
CREATE TRIGGER update_last_change
AFTER UPDATE
ON car
BEGIN
UPDATE car SET last_change = CURRENT_TIMESTAMP WHERE id = NEW.id;
END;
您可以使用以下查询来获取具有最新更改的行。
SELECT * FROM car ORDER BY last_change DESC LIMIT 1;
这将始终返回最多一行。可以有多个具有相同last_change的行。如果您希望在这种情况下所有行都包含最新的last_change,请使用以下查询。
SELECT * FROM car WHERE last_change = (
SELECT last_change FROM car ORDER BY last_change DESC LIMIT 1
);