假设我有一个表MyTable
,其中主键为ID
,复合唯一键为ColA
和ColB
。
我想检索受UPDATE语句影响的ID
,如下所示:
UPDATE MyTable
SET ColC='Blah'
WHERE ColA='xxx' and ColB='yyy'
有没有办法在sqlite3
中使用python3
在单个语句中执行此操作,而在成功更新后不再执行另一个SELECT?我知道游标上的lastrowid
属性,但它似乎只适用于INSERT。
更一般地说,我很好奇任何SQL引擎是否允许这样的功能。
答案 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。