Существует столбец с именем ... на него нельзя ссылаться из этой части подзапроса запроса - PullRequest
0 голосов
/ 07 июня 2018
 WITH upt as (
 UPDATE backend."orders" SET "statusId" = 5
 WHERE "userId" IN (177962,88265) and "statusId" IN (0,1,2,3,4) RETURNING *
)
 INSERT INTO __test_result(orderid) VALUES ((SELECT orderid FROM upt))

Нужно обновить и зарегистрировать данные, получая эту ошибку

ERROR: column "orderid" does not exist Hint: There is a column named 
"orderid" in table "__test_result", but it cannot be referenced from this part of the query.

Как вставить в таблицу все строки "upt"? Должно выглядеть

"upt.orderid","jsonb for that orderid"

для каждого заказа jsonb должен быть создан из столбца "upt" с таким же значением orderid

1 Ответ

0 голосов
/ 07 июня 2018

Если вы хотите использовать select в качестве источника для вставки (для нескольких строк), не используйте предложение values, используйте выбор непосредственно: insert into .. select ....

Итак, в вашем случае:

WITH upt as (
  UPDATE backend."orders" 
     SET "statusId" = 5
  WHERE "userId" IN (177962,88265) 
    and "statusId" IN (0,1,2,3,4) 
  RETURNING *
)
INSERT INTO __test_result(orderid) 
SELECT orderid 
FROM upt;
...