我想使用sqlite(使用Java JDBC,不确定是否重要)向数据库添加或替换新行,并返回行的自动生成ID,我不知道如何执行此操作有效/干净。
表定义有> = 3列:
ID
key
)我可以想到两种一般方法:
SELECT ID FROM myTable WHERE key = ?
或
INSERT OR REPLACE INTO myTable (key, metadata) VALUES (?, ?)
SELECT ID FROM myTable WHERE key = ?
我该怎么办?不确定两种方法是否都是原子事务。 (好吧,第一个不是,不确定第二个)
编辑:我刚刚尝试了INSERT OR REPLACE方法,并且“工作”,除了它还用新的ID替换ID,这不是我想要发生的。我想保留现有的ID。
答案 0 :(得分:2)
使用PreparedStatement可以返回生成的插入键,这样就不需要在插入后运行select语句来获取密钥。
要做到这一点:
答案 1 :(得分:1)
有一个SQLITE函数用于获取最后插入的自动ID
SELECT last_insert_rowid()
不确定它是否适用于更新