SQL选择行,更新该行,无竞争条件

SQL选择行,更新该行,无竞争条件,sql,sqlite,Sql,Sqlite,现在我正在运行两个查询,但是并发运行时存在竞争条件。我如何在没有竞争条件的情况下重写它,同时仍然知道更新了哪一行 sqlite3 在所有rdbms中,您使用事务将命令分组在一起,然后在最后提交或回滚。然后用for update子句锁定select语句中的行。唉,这在SQLite中是不可能的;-/。相反,您可以使用开始即时事务,这里解释如下:我放弃了。sqlite是一个令人痛苦的工作。博士后只是工作 SELECT * FROM pages WHERE domain=? ORDER BY c

现在我正在运行两个查询,但是并发运行时存在竞争条件。我如何在没有竞争条件的情况下重写它,同时仍然知道更新了哪一行

sqlite3


在所有rdbms中,您使用事务将命令分组在一起,然后在最后提交或回滚。然后用
for update
子句锁定select语句中的行。唉,这在SQLite中是不可能的;-/。相反,您可以使用
开始即时事务
,这里解释如下:我放弃了。sqlite是一个令人痛苦的工作。博士后只是工作
    SELECT * FROM pages WHERE domain=? ORDER BY crawled ASC LIMIT 1;
    UPDATE pages SET crawled=DATETIME('now') WHERE id=?;
    ... use results from SELECT query ...