我发现有一些重复的线程在谈论使用选项innodb_autoinc_lock_mode=0
,但我不知道如何在SQLite中这样做。
这是我的代码:
ps = conn.prepareStatement("INSERT OR IGNORE INTO users(name, lastname) VALUES(?, ?)");
ps.setString(1, nameField.getText());
ps.setString(2, lastNField.getText());
int res = ps.executeUpdate();
name
和lastname
被设置为唯一键。这可以按预期工作(如果名称和姓氏已经存在,则不会插入),但每次都会自动增加id
。知道如何通过修复自动增量或更改sql代码来解决这个问题吗?我在java中这样做。
答案 0 :(得分:1)
只需从表定义中删除AUTOINCREMENT即可。
一个简单的INTEGER PRIMARAY KEY列still is autoincrementing,但不保留单独的计数器。相反,新行只会获取当前表中最大的一个ID。
仅当您要阻止重复使用已删除行的ID时,才能使用AUTOINCREMENT。