gpt4 book ai didi

SQLITE:替换而不使用 auto_increment

转载 作者:行者123 更新时间:2023-12-03 17:32:23 30 4
gpt4 key购买 nike

我有一个sqlite表:
例如

CREATE TABLE TEST (id integer primary key, number integer unique, name text); 

但是,我需要在更新时不自动增加 id 字段的情况下进行 REPLACE。

例如:表是空的
REPLACE INTO TEST (null, 23, 'Bill');
REPLACE INTO TEST (null, 52, 'Jack');

当我执行查询时, SELECT * FROM TEST; 我得到...
1|23|Bill
2|52|Jack

如果我做...
REPLACE INTO TEST VALUES (null, 52, 'John');

从查询 SELECT * FROM TEST; 我得到..
1|23|Bill
3|52|John

但是我需要...
1|23|Bill
2|52|John

有没有人知道如何做到这一点?

最佳答案

这对于单个命令是不可能的。
REPLACE 总是在插入新记录之前删除旧记录(如果存在)。

要保留自动增量值,您必须保留记录。
也就是说,就地更新旧记录,只有在旧记录不存在时才插入新记录:

db.execute("UPDATE Test SET Name = 'John' WHERE Number = 52")
if affected_records == 0:
db.execute("INSERT INTO Test(Number, Name) VALUES(52, 'John')")

关于SQLITE:替换而不使用 auto_increment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16942109/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com