You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

成功执行UPDATE脚本后Dbeaver统计显示更新行数为0但数据已更新的原因

问题原因及解决方案

核心原因

你的UPDATE语句被包裹在PostgreSQL的DO $$ ... $$匿名代码块(PL/pgSQL块)中执行,而Dbeaver的统计标签页只会捕获直接执行的DML语句(比如单独运行UPDATE)返回的受影响行数,不会解析匿名代码块内部的语句执行统计。

匿名代码块本身执行后只会返回"DO"状态,不会向外暴露内部UPDATE的行数信息,所以Dbeaver统计页显示更新行数为0,但实际上UPDATE已经生效。

验证与解决方法

  • 验证更新行数:可以在DO块内部添加变量捕获更新行数,比如:

    do $$
    declare
      updated_rows integer;
      err_context text := 'Error during script execution';
    begin
      UPDATE table1 p SET name= pt.name
      FROM table2 pt WHERE p.id = pt.tableid;
      -- 获取更新行数并打印
      GET DIAGNOSTICS updated_rows = ROW_COUNT;
      raise notice '脚本执行成功,更新行数: %', updated_rows;
    
    exception
      when others then
        RAISE INFO '错误名称:%',SQLERRM;
        RAISE INFO '错误状态:%', SQLSTATE;
        RAISE INFO '错误上下文:%', err_context;
    end $$;
    

    执行后在Dbeaver的"输出"标签页可以看到notice打印的更新行数。

  • 让统计页显示行数:如果需要Dbeaver统计页直接显示更新行数,直接执行不带DO块的UPDATE语句即可:

    UPDATE table1 p SET name= pt.name
    FROM table2 pt WHERE p.id = pt.tableid;
    

    执行后统计标签页会正常显示受影响的行数。

内容的提问来源于stack exchange,提问作者Thejus32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:30:58