Python: INSERT INTO ... ON DUPLICATE KEY UPDATE 的 db.lastrowid
备忘,当对一个有唯一索引字段的表做插入操作INSERT INTO
时做遇到冲突则更新的逻辑ON DUPLICATE KEY UPDATE
。
想知道此时是否仍然能够获取到 操作的行的id值db.lastrowid
?
sql = "INSERT INTO `mTable`(`id`, `tfsn`) " \
"VALUES(%s, %s) " \
"ON DUPLICATE KEY UPDATE `tfsn`=VALUES(`tfsn`);"
vals = (id, tfsn)
try:
db.execute(sql, vals)
new_cid = db.lastrowid
print("tfid:", tfid) #如果触发了update 可以获得id值?
结论是,能,也可能不。
当触发update 有内容变更时,可以获得 id值;
当update的内容新旧完全一致前后没有变化的话,mysql会认为没有任何行被更新。所以返回的 id 会是0
