首页 > 解决方案 > 获取 SQL 状态:25P02 尝试使用来自另一个表的数据更新表

问题描述

我正在使用 PostgreSQL 数据库。我有两个表,即companybl_location。我location_id在两个表中都有一个字段。现在我正在尝试将 from 的值location_id复制bl_locationcompanycompanyis的主键,company_id它也存储在里面bl_location。我正在尝试以下查询:

UPDATE company 
    SET location_id = bl_location.location_id 
from bl_location  
where company.company_id = bl_location.company_id;

使用我在网上找到的语法:

update table1
set col1 = . . .
from table2
where table1.id = table2.table1_id

但我在pgAdmin工具的控制台中得到以下信息:

ERROR:  current transaction is aborted, commands ignored until end of transaction block

********** Error **********

ERROR: current transaction is aborted, commands ignored until end of transaction block
SQL state: 25P02

我无法弄清楚我的查询有什么问题。

标签: postgresqlsql-update

解决方案


无论您是否意识到,您的语句都在显式事务中运行,并且前面的语句之一是同一个事务必须导致错误。

要对此进行调试,请考虑设置log_statement = 'all'以便记录所有语句。通过跟踪来自同一后端 PID 的所有语句,您将能够识别出罪魁祸首。


推荐阅读