Size: a a a

pgsql – PostgreSQL

2020 May 24

DB

Dimitriy Belokon in pgsql – PostgreSQL
Denis Girko ☕️
WITH a2 AS (…) INSERT INTO … (…) SELECT … CASE … END … FROM a2 …
а как я могу мои case when вынести в отдельные переменные, чтобы использовать их на том месте?
источник

DB

Dimitriy Belokon in pgsql – PostgreSQL
потому что может быть много Values , а значение там будет повторяться
источник

DG

Denis Girko ☕️ in pgsql – PostgreSQL
Не знаю. В таблицу их положите.
источник

s

sexst in pgsql – PostgreSQL
Dimitriy Belokon
Пожскажите как решить ошибку, будьте добры

WITH a2 AS
(SELECT cluster_root_id FROM "address" as a22 where a22."input" = '34i39oPzZuhTvdjGDgKq4JLDEJnPZm4cbY' OR a22.input = '34i39oPzZuhTvdjGDgKq4JLDEJnPZm4cbY' ORDER BY cluster_root_id DESC LIMIT 1),
a3(cluster_current_id) AS (select cluster_current_id from address a3 order by a3.cluster_current_id DESC LIMIT 1)
INSERT INTO "address" (input, cluster_root_id, cluster_current_id , cluster_parent_id ) VALUES (
 '34i39oPzZuhTvdjGDgKq4JLDEJnPZm4cbY',
 CASE WHEN a2.cluster_root_id IS NOT NULL THEN a2.cluster_root_id ELSE a3.cluster_current_id + 1 END,
 CASE WHEN a2.cluster_root_id IS NOT NULL then a2.cluster_current_id ELSE a3.cluster_current_id + 1 END,
 a3.cluster_current_id + 1
);

Error occurred during SQL script execution
Reason:
SQL Error [42P01]: ERROR: missing FROM-clause entry for table "a2"
 Position: 562
Можно куда короче и читаемее написать
Case when a is not null then a else b end => coalesce(a, b)
источник

ac

alex che in pgsql – PostgreSQL
Dimitriy Belokon
потому что может быть много Values , а значение там будет повторяться
Уточните, сколько строк вы хотите вставить и что будет повторяться.
Вообще-то, при вашем способе генерации cluster_current_id значение max(cluster_current_id) + 1 будет каждый раз новое
источник

DB

Dimitriy Belokon in pgsql – PostgreSQL
alex che
Уточните, сколько строк вы хотите вставить и что будет повторяться.
Вообще-то, при вашем способе генерации cluster_current_id значение max(cluster_current_id) + 1 будет каждый раз новое
Спасибо
источник
2020 May 25

ac

alex che in pgsql – PostgreSQL
>order by a3.cluster_current_id DESC LIMIT 1
Лучше использовать sequence, если нет требования, чтобы в качестве id были использованы последовательные числа без пропусков
источник

DB

Dimitriy Belokon in pgsql – PostgreSQL
alex che
>order by a3.cluster_current_id DESC LIMIT 1
Лучше использовать sequence, если нет требования, чтобы в качестве id были использованы последовательные числа без пропусков
Спасибо, посмотрю как он работает. Я уже давно с бэкендом и базой не работаю, к сожалению сложно снова вникнуть.
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
день добрый
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
ошибка в базе:
ПРЕДУПРЕЖДЕНИЕ:  база данных "DB" должна быть очищена (предельное число транзакций: 995554)
ПОДСКАЗКА:  Во избежание отключения базы данных выполните очистку (VACUUM) всей базы.
 Возможно, вам также придётся зафиксировать или откатить старые
 подготовленные транзакции.
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
зашел в однопользовательском режиме и запустил VACUUM, но выходят те же самые ошибки
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
что делать?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Загружатся в single-user mode и вакуумить все базы.
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
так я зашел в базе с этой ошибкой и запустил вакуум
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
ничего не изменилось
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Скорее всего не к той базе подключились.
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
/usr/lib/postgresql/9.6/bin/postgres --single -D /var/lib/pos.6/main DB
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
так подключился
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
и выполнил VACUUM
источник

АЛ

Андрей Лапин... in pgsql – PostgreSQL
и также сыплются эти ошибки на этой базе
источник