C 在SQLite3中获取受更新影响的行而无需额外查询

C 在SQLite3中获取受更新影响的行而无需额外查询,c,sqlite,sql-update,C,Sqlite,Sql Update,在我频繁调用的函数中,是否有一种方法可以更新SQLite3数据库中的行并获取这些更新的行,而无需第二次查询或执行任何其他比SELECT后跟UPDATE慢的操作?使用触发器和中间表并不重要,因为它仍然比我想要的慢。我正在使用标准的sqlite3C库 示例: UPDATE "ACTIVE" SET confirmed2 = '%d' WHERE username2 = '%s' AND activity = '%d' 我正在更新“活动”表的行。我还想检索“username2”和“activity”

在我频繁调用的函数中,是否有一种方法可以更新SQLite3数据库中的行并获取这些更新的行,而无需第二次查询或执行任何其他比
SELECT
后跟
UPDATE
慢的操作?使用触发器和中间表并不重要,因为它仍然比我想要的慢。我正在使用标准的
sqlite3
C库

示例:

UPDATE "ACTIVE" SET confirmed2 = '%d' WHERE username2 = '%s' AND activity = '%d'

我正在更新“活动”表的行。我还想检索“username2”和“activity”是某对值的所有行,以便检查另一列的值“username1”。由于
UPDATE
命令已经在查询这些行以更新它们,因此我应该(但可能没有)一种方法来获取这些行,而不必再次进行查询。我可以获取受影响的行数,但找不到有关获取行数据的任何信息。

UPDATE语句不返回任何信息,因此这是不可能的


之后立即使用SELECT语句不会造成伤害;行仍将在缓存中。

UPDATE语句不会返回任何内容,因此这是不可能的

之后立即使用SELECT语句不会造成伤害;行仍将在缓存中。

自版本3.35.0(2021-03-12)以来,SQLite包括一个非标准的,允许您查找的内容。
在您的情况下,您只需写:

UPDATE“ACTIVE”SET confirmed2='%d',其中username2='%s',activity='%d'返回*;
自版本3.35.0(2021-03-12)以来,SQLite包括一个非标准的,可以满足您的需求。
在您的情况下,您只需写:

UPDATE“ACTIVE”SET confirmed2='%d',其中username2='%s',activity='%d'返回*;

不知道有缓存!这就解释了我认为完全缺少sqlite3函数的原因。我不知道有缓存!这就解释了我认为完全缺少sqlite3函数的原因。