作为一个开发团队,我们只能访问开发数据库来更改表、视图等。当涉及到测试、阶段和生产环境时,我们将“SQL 脚本”发送给 DBA,以便他们可以在相应的更高环境下运行。
不幸的是,DBA 只向我们提供了脚本中最后一个 SQL 语句的执行日志,因为“这是 pgAdmin 的限制”。我们对脚本的其余部分是如何进行的一无所知,即使是在产品中也是如此。
例如,如果 SQL 脚本有 5 个 SQL 查询,如下所示:
insert into ...
delete from ...
insert into ...
update ...
update ...
DBA 只向我们发回以下单个日志行(我们假设对应于最后一个查询):
Query returned successfully in 78 msec
是否可以使用 pgAdmin 或其他工具获取脚本中每个查询的成功/失败状态以及受影响的行数?
您可以创建自定义 SQL 脚本来执行块中的每个查询并捕获结果。该方法可以返回每个查询的状态以及受影响的行数。就像下面这样
INSERT INTO my_table (column1) VALUES ('value1') RETURNING id INTO v_result;
GET DIAGNOSTICS v_rows_affected = ROW_COUNT;
RAISE NOTICE 'Query 1 affected % rows', v_rows_affected;