【发布时间】:2018-02-24 20:16:11
【问题描述】:
我有一个 SQLite 数据库,我需要用不断增加的计数器标记任何新记录和任何修改的记录。我必须避免竞争条件
这是我目前正在使用的两个查询:
插入:
INSERT INTO customer (id, name, counter) VALUES (myId, "blablabla", ((SELECT MAX(counter) FROM customer) + 1))
更新:
UPDATE customer SET name = "blablabla", counter = (SELECT MAX(counter) FROM customer) + 1 WHERE id = myId
这样安全吗?我在 Cordova 移动应用上使用 SQLite
如果没有,最好的方法是什么?我可以将counter 声明为AUTO_INCREMENT 并且只有这两个查询吗?
插入:
INSERT INTO customer (id, name) VALUES (myId, "blablabla")
更新:
UPDATE customer SET name = "blablabla", counter = (SELECT MAX(counter) FROM customer) + 1 WHERE id = myId
【问题讨论】:
-
SQLite 和 MySQL 是两个完全不同的东西。
-
让我们去 SQLite 吧...顺便说一句太棒了 -> github.com/ConsenSys/dapp-store-contracts/blob/master/contracts/…
-
SQLite 是嵌入应用程序的不错选择,因为它不需要服务器进程。
-
好的,但是我在做什么正确吗?看问题
-
SELECT MAX(x)不会不受竞争条件的影响。你为什么不做一个序列生成器?
标签: sql database sqlite cordova