
Ilya
17.03.2017
15:48:01
Привет, сообщество, как установить дебаг режим для pgadmin3?

Pavel
17.03.2017
16:04:58

Петр
17.03.2017
16:05:49
контекстного меню нет чтоли?
библиотеки подключил в shared_preload_libraries?

Mars
17.03.2017
20:05:16
Добрый вечер.
А возможно ли написать запрос на вставку так чтоб при конфликте в уникальном индексе делалось обновление старой строки(чтоб исключить конфликт) и новая строка вставлялась?

Google

Fedor
17.03.2017
20:07:46
Что то типа того ? INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19 ?

Алексей
17.03.2017
20:08:05
а на что менять старую строку, если хотите еще и новую вставить?

Mars
17.03.2017
20:09:55

Fedor
17.03.2017
20:11:05
BEGIN
INSERT INTO db(a,b) VALUES (key, data);
EXCEPTION WHEN unique_violation THEN
— смотрим, улыбаемся ? Делаем что хотим
END;

Mars
17.03.2017
20:11:24
Я пока думаю в сторону WITH c AS () INSERT .... Это приемлимый вариант вообще?

Алексей
17.03.2017
20:13:27
не вижу, где тут вставить UPDATE и второй INSERT. А можно двумя запросами?

Mars
17.03.2017
20:14:25

Алексей
17.03.2017
20:15:14
первый инсерт отвалится по конфликту, в этом случае хочется исправить старую строку и повторить инсерт - так я увидел

Mars
17.03.2017
20:16:22
А, понял. Это зависит от варианта реализации. Но про превентивный метод что думаете WITH .. AS () INSERT ...?

Алексей
17.03.2017
20:18:23
конструкция хороша вообще, но как в нее вкрутить желаемые update + insert, не представляю
если ключ, по которому возможен конфликт, один, я бы сначала сделал update по этому ключу, а потом insert.

Darafei
17.03.2017
20:20:48
insert from update returning union all insert returning limit 1

Google

Mars
17.03.2017
20:22:42

Darafei
17.03.2017
20:23:03
я вообще не уверен, что работает и синтаксически допустимо

Mars
17.03.2017
20:23:12
Nice!

Danil
17.03.2017
20:23:36
если через with вроде пролетит обычный инсерт когда нет конфликта

Alex
17.03.2017
20:24:17
Имхо не отработает

Mars
17.03.2017
20:24:23
Ага, пока в эту строну склоняюсь, меньше текста, и все очевидно

Alex
17.03.2017
20:25:01
Нет под рукой psql не могу сказать, чисто на мой взгляд

Mars
17.03.2017
20:25:30
А сейчас проверю и скажу
Но по идее все должно отработать на отлично, минуту

Danil
17.03.2017
20:26:17
а, не, надо инсерт внутрь а апдейт снаружи а не наоборот

Darafei
17.03.2017
20:28:50
у меня идея была, что если заапдейтилось, то надо вставить, а если не заапдейтилось, то вставить
потому insert from update returning для если заапдейтилось - вставить

Alex
17.03.2017
20:29:41
Через with пройдет

Darafei
17.03.2017
20:29:55
и union all insert returning limit 1, чтобы если не вставилось и не заапдейтилось, то вставилось

Danil
17.03.2017
20:32:42
короче как-то так может и отработает, под рукой нет ничего проверить
WITH upd_rows AS (
update <table>
WHERE <condition>
RETURNING *
)
INSERT INTO <table>
VALUES (...)
вроде нормуль, если все-таки дойдет до инсерта, в чем я для случая отсутствия конфликта не уверен.

Mars
17.03.2017
20:36:24
Если разбить на два отдельных запроса, то работает. Может быть индекс не обновлется немедленно после выражения в WITH. Печаль
Конкуретных запросов не ожидается, пока сделал без WITH, через ;, два отдельных запроса. Но тема интересная.

Danil
17.03.2017
20:49:45
WITH очень странно работает. если апдейтишь на другой уникальный ключ и потом вставляешь третий уникальный ключ - все работает отлично. а если апдейтишь на другой уникальный ключ, а потом вставляешь изначальный - нифига, как будто и не было апдейта внутри WITH.

Google

Mars
17.03.2017
20:50:19
Именно!

Алексей
17.03.2017
20:50:21
а его и не было. Это же один запрос

Mars
17.03.2017
20:50:51
Запрос с подзапросом

Alex
17.03.2017
20:51:16
Одна транзакция
Один скоуп

Danil
17.03.2017
20:52:21
то что в инсерте можно использовать результат update из WITH сильно сбивает с толку
в этом примере просто не нужно, но вообще можно было какой-нить INSERT INTO <table> select * from upd_rows написать

Max
17.03.2017
21:27:04

ros
18.03.2017
06:24:15

Pavel
18.03.2017
19:31:46
Сразу 2 спам бота, кто там дежурный админ?

Alex
18.03.2017
19:34:27
подскажите пожалуйста, как называется магическая функция, которая дизаблит индексы? гугл предлагает дропать в транзакции
вот что pgconf-то творит. люди-то потекли:)

Fike
18.03.2017
19:44:14
Каждый раз радуюсь, как ребенок, когда вижу настолько пробитое дно

Vadim
18.03.2017
19:48:08

Alex
18.03.2017
19:48:39
Vadim спасибо)

Vadim
18.03.2017
19:48:49
не за что)

Admin
ERROR: S client not available

Egor
18.03.2017
19:50:39
REVOKE ALL PRIVILEGES ON чатик FROM «Раздают Деньги»
DROP «Раздают Деньги»
хм, не сработало…

Михаил
18.03.2017
19:55:53
точку с запятой забыл, поэтому

Google

Алексей
18.03.2017
19:57:49
kill -9

Dmitry
18.03.2017
19:58:29
kill -9 $$

Айтуар
18.03.2017
20:15:03
killall

Andrey
18.03.2017
20:44:05
drop database поможет!

Pavel
18.03.2017
20:47:40

Pavel
18.03.2017
20:48:17
Просто вдруг человек спит, а его хайлайтят. Меня так будили пару раз в 4 утра и это очень противно.

Pavel
18.03.2017
20:48:43
Да, ночью не стоит ?
Хотя я обычно звук выключаю. Не раз страдал

Andrey
18.03.2017
20:49:18
Предлагаю таки определить SLA :)

Pavel
18.03.2017
20:50:25
Я бы предложил Дорофея добавить в админы.
Он тут перманентно

Darafei
18.03.2017
20:52:53
Я не перманентно, я только местную симку купил :)

Andrey
18.03.2017
20:54:03
Вы предпочитаете авангардизм или сюрреализм?
— Постмодернизм. Я даже творю в нем.
— Вы художник?
— Нет. Модератор!

Darafei
18.03.2017
20:56:16

Pavel
18.03.2017
20:57:44
Интерфейс тот еще в этих делах

Darafei
18.03.2017
20:59:35
Теле2, по паспорту

Pavel
18.03.2017
21:00:17
Ааа, да-да. Уже начали по загран. Точно. До этого была та еще проблема

Google

Darafei
18.03.2017
21:01:44
С 2010 покупал по белорусскому (у нас один общий, международного образца) без проблем

Pavel
18.03.2017
21:55:24

Darafei
18.03.2017
22:20:30
У меня в "загране" есть "прописка" :D

Pavel
18.03.2017
22:38:11
«Офигеть» кричали гости ?