先执行SELECT * FROM TABLE WHERE clause
,然后执行DELETE * FROM TABLE WHERE clause
这样的两个查询效率不高。
因此,我想进行DELETE
查询并返回删除的行(一个查询)。
我竭力做到:
DELETE OUTPUT DELETED.*
FROM table
WHERE clause
但我有一个错误:
SQLite exception: near "OUTPUT": syntax error
如何使它正确或也许有另一种替代方法返回已删除的行?
3条答案
按热度按时间0dxa2lsx1#
DELETE statement没有OUTPUT子句。
在执行SELECT之后,所有重要的数据都该高速缓存中,因此DELETE将快速运行。
因为SELECT加DELETE是 * 唯一 * 的方式,所以它是 * 最有效 * 的方式。
从3.35版本开始,SQLite有RETURNING clause。
2izufjch2#
可以返回使用returning子句删除的记录
z9zf31ra3#
可以在
DELETE
查询之后使用changes()
调用:https://www.sqlite.org/c3ref/changes.html实现方式会因所用语言的不同而有所不同。例如,在PHP中,您可以编写: