Получение состояния SQL: 25P02 при попытке обновить таблицу данными из другого - PullRequest
0 голосов
/ 29 ноября 2018

Я использую БД PostgreSQL.У меня есть две таблицы, а именно company и bl_location.У меня есть поле location_id в обеих таблицах.Сейчас я пытаюсь скопировать значение location_id из bl_location в company.Первичный ключ company - 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

Я не могу понять, что не так с моим запросом.

1 Ответ

0 голосов
/ 29 ноября 2018

Независимо от того, знаете ли вы об этом или нет, ваш оператор выполняется внутри явной транзакции, и один из предыдущих операторов - это та же транзакция, которая должна была вызвать ошибку.

Чтобы отладить это, рассмотрите установку log_statement = 'all', чтобы все записи регистрировались.Отслеживая все утверждения из одного и того же внутреннего PID, вы сможете определить виновника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...