我有一个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
答案 0 :(得分:1)
创建一个只包含计数器值的TABLE,每次添加新记录或更新时都会调用它,并将值增加1并将该值写回带有更新的TABLE我不知道是什么当你删除一条记录时,你会这样做但与上面相同,只是将计数器值减少1
如果你没有分钟,你可以告诉我们为什么记录需要有一个ID和一个psudo ID,真正的ID是什么并不重要或者我错过了你在做什么我只谈论Sqlite