如何删除行数?

时间:2017-10-25 04:20:00

标签: sql postgresql

在我的Windows批处理文件中,我执行一个sql,其中包含一个删除行的查询,如果符合条件,这意味着它删除了不需要的数据行。假设sql执行没有错误,有没有办法获取已删除行的计数?

这样做的目的是,如果有删除的行,我可以记录。

IF DELETED_ROWS_COUNT > 0 (
   echo Some invalid rows are DELETED.
)

这就是我执行sql文件的方式。

psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME% -q -f "%HOME%\bin\import.sql" 2>> "%importfilename%"

或者如果您有任何其他方法比这个想法更可行,我们将非常感激。

1 个答案:

答案 0 :(得分:1)

一种选择是使用可写CTE获取已删除的元组计数,例如

with del as (delete from a returning id) select count (*) from del;

AFAIK psql没有提供任何简单的方法来获取受影响的行数,而无需解析命令标记输出,如

DELETE 8

来自标准输出。

另外,我建议使用psql -qAtX在没有标题/格式的安静元组模式下运行,并忽略任何psqlrc