我想检查受oracle更新查询影响的行数,而不执行对生产环境的查询,这是可能的吗?
您可以在更新查询中运行EXPLAIN
。它的输出将包括查询管道每一步的行数等内容。此外,EXPLAIN
将使用表统计数据进行估计,而不是使用实际的生产表。
代替UPDATE
使用SELECT
语句与相同的WHERE
过滤器,并使用COUNT(*)
来获得行数;您将获得行的确切计数,而无需更新它们。
您也可以使用表统计信息,但是如果您的统计信息是过时的,那么给出的估计可能不能准确地反映实际的行数。
您可以参考v$sql
表来查看查询历史,或者作为上述答案之一,如Explain
。
此外,您可以创建一个一次性手动触发器,并将其设置为在表的更新时启动update
。Eg. Create Trigger tname
After Update
on
Table for each row
..... SELECT count(:new.id)...etc