如何在单个UPDATE语句中获取上次更新行的ID?

时间:2015-09-17 23:57:37

标签: python python-3.x sqlite

假设我有一个表MyTable,其中主键为ID,复合唯一键为ColAColB

我想检索受UPDATE语句影响的ID,如下所示:

UPDATE MyTable
SET ColC='Blah'
WHERE ColA='xxx' and ColB='yyy'

有没有办法在sqlite3中使用python3在单个语句中执行此操作,而在成功更新后不再执行另一个SELECT?我知道游标上的lastrowid属性,但它似乎只适用于INSERT。

更一般地说,我很好奇任何SQL引擎是否允许这样的功能。

1 个答案:

答案 0 :(得分:2)

你问过是否可以在其他DBMS中完成,所以我在MySQL中找到了这个方法:

UPDATE MyTable as m1
JOIN (SELECT @id := id AS id
      FROM MyTable
      WHERE ColA = 'xxx' AND ColB = 'yyy') AS m2
ON m1.id = m2.id
SET m1.ColC = 'Blah';

在此之后,您可以SELECT @id获取更新行的ID。