SQLite upsert:获取上次插入或编辑的 rowid



假设我在表email属性上有一个唯一键users并且我想存储或更新刚刚登录的用户数据:

INSERT INTO users (email, count) VALUES('john@doe.com',0)
ON CONFLICT(email) DO UPDATE SET count=count+1

现在在 PHP 中,我可以使用 lastInsertRowID(( 来检索插入的 rowid,但是如果触发ON CONFLICT子句怎么办?我是否可以比运行其他选择更优雅地获取相关的 rowid(插入或更新(?

我在参考资料中没有看到提及这一点。

可以使用 INSERT OR REPLACE 语句在表中写入新行或替换现有行。插入或替换语句的语法和行为类似于插入语句。与 INSERT 语句不同,如果行已存在,则 INSERT OR REPLACE 语句不会生成错误。

INSERT OR REPLACE INTO users (email, count) 
VALUES ('john@doe.com', IFNULL((SELECT count FROM users WHERE email = 'john@doe.com'), 0) + 1)

最新更新