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

Python 如何在单个UPDATE语句中获取上次更新行的ID?,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,假设我有一个表MyTable,其中主键是ID,复合唯一键是ColA和ColB 我想检索受UPDATE语句影响的ID,如下所示: UPDATE MyTable SET ColC='Blah' WHERE ColA='xxx' and ColB='yyy' 是否有任何方法可以在一条语句中使用python3中的sqlite3而不在成功更新后执行另一个选择?我知道游标上有lastrowid属性,但它似乎只适用于插入 更一般地说,我很好奇是否有任何SQL引擎允许这种功能。您询问是否可以在其他DBMS中实

假设我有一个表
MyTable
,其中主键是
ID
,复合唯一键是
ColA
ColB

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

UPDATE MyTable
SET ColC='Blah'
WHERE ColA='xxx' and ColB='yyy'
是否有任何方法可以在一条语句中使用
python3
中的
sqlite3
而不在成功更新后执行另一个选择?我知道游标上有
lastrowid
属性,但它似乎只适用于插入


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

您询问是否可以在其他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';

在此之后,您可以执行
选择@id
以获取更新行的id。

我对此表示怀疑,因为只有在这个精心设计的示例中,才能保证只更新一条记录。。。它需要处理所有更新的情况。。。也就是说我真的不知道,很可能wrong@JoranBeasley,很奇怪,当你说“只有在这个人为的例子中才能保证只更新一条记录”时,你是说大多数现实世界的应用程序最有可能有一个存储程序,它在一个更新语句上改变其他的表或行吗?考虑<代码> Update BLAH集x=2,其中1=1 < /代码> @ JoranBeasley,这不是比我的例子更巧妙吗?好吧,考虑价格上涨,然后代码>更新价格设定价格=价格* 1.1,类别= 56 < /代码>这是一个非常常见的SeaReo与更新…是的,我之前的例子确实是为了证明一个问题。。。也就是说,也许另一个答案会有帮助。我对MySQL了解不多,但第二个答案是什么?这是更新后的另一条语句吗?这就是在MySQL=
@id:=id
中设置用户变量的方式,从所选行的
id
列设置变量
@id