Pull to refresh
42
0
Oleg Oleynik @zzashpaupat

Разработчик

Send message
Он платный только для коммерческих СУБД. В контексте «open-source сервера онлайн-чатов» использовать Oracle или другую платную СУБД было бы нелогично.
Советую попробовать JOOQ.
Прост, как 2 копейки, статическая типизация запросов, удобный DSL: пишешь код, как SQL-запрос.
В жизни практически любого Java-разработчика наступает тот момент, когда это нужно. Момент, когда, чтобы разобраться почему приложение ведет себя так, а не иначе, когда нужно посмотреть, где проседает производительность, когда нужно написать какой-нибудь класс для модификации байткода для получения какого-либо эффекта, и т.д.
А почему мало полезна?
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
Спасибо! Вчера, когда увидел информацию о второй альфе, добавил её в UPD в конец статьи, но статья почему-то не обновилась. Сейчас попробую еще раз.
Вот здесь один из разработчиков PostgreSQL рассказывает, почему UPSERT != MERGE.

Information

Rating
Does not participate
Location
Самара, Самарская обл., Россия
Date of birth
Registered
Activity