Pull to refresh

Comments 16

Дождались, наконец то, ON CONFLICT. Помню, что это была первая неожиданность при переходе c mysql.
При обратном переходе неожиданностей, вероятно, было бы больше =)
Странная, конечно, конструкция «ON CONFLICT», лучше уж MERGE использовать, если хочется сделать и insert и update (имхо со стороны разработчика oracle)
Было бы круто увидеть в 9.5 полноценный multi-master replication (BDR).
С почином! Хорошая, обстоятельная статья.

Хорошо бы ещё добавить в конце ссылку на скачивание — только что вышла вторая альфа www.postgresql.org/about/news/1604
Ну и судя по всему, полноценный релиз будет в 4-м квартале, а не 3-м.
Спасибо! Вчера, когда увидел информацию о второй альфе, добавил её в UPD в конец статьи, но статья почему-то не обновилась. Сейчас попробую еще раз.
В процессе, извиняюсь за задержку с её публикацией.
Отлично. А сколько всего планируется частей?
Думаю, ещё 2 или, скорее, 3: 1) GROUPING SETS, ROLLUP, CUBE
2) BRIN-индексы и SKIP LOCKED
3) Новые возможности для JSONB и все остальное
Интересно, там где ON CONFLICT DO UPDATE, так же как в mysql будет увеличивать auto_increment (sequence) счётчик? Если да, то такая функциональность мало полезна.
А почему мало полезна?
PostgreSQL всегда увеличивает сначала счетчик (берет из него значение для записи предназначенной на вставку), а потом уже производит проверки и т.д. Так что если ваш INSERT упадет на CONSTRAINT или CHECK, то счетчик все равно будет увеличен.

Пример:

CREATE TABLE public.country
(
  id bigserial,
  name character varying,
  UNIQUE (name)
);

INSERT INTO country (name)
VALUES ('USA'), ('Russia');

select currval('country_id_seq');

2
INSERT INTO country (name)
VALUES ('USA');

ERROR: duplicate key value violates unique constraint «country_name_key»
DETAIL: Key (name)=(USA) already exists.
select currval('country_id_seq');

3
Sign up to leave a comment.

Articles

Change theme settings