Pull to refresh

Comments 5

когда же добавят реплейс)

Насколько я вижу, это не один, а два варианта REPLACE.
Первый, в Sqlite, применяется в описании констрейнтов, например как PRIMARY KEY ON CONFLICT REPLACE . Пока этого нет в стандарте SQL, в постгресе тоже это не появится, тем более что аналогичную конструкцию можно применять в INSERT, см https://postgrespro.ru/docs/postgresql/15/sql-insert

Второй, из MariaDB - это другая конструкция, тоже не из стандарта SQL, поэтому вряд ли её можно ожидать в постгресе. Тем более, что есть вышеупомнятуый INSERT...ON CONFLICT UPDATE, и с 15й версии соответствующий стандарту SQL более универсальный MERGE https://postgrespro.ru/docs/postgresql/15/sql-merge

Merge выглядит сложнее чем типовая конструкция upsert для pg. Надо вникнуть, может и пойдет. INSERT...ON CONFLICT UPDATE слишком длинный для очень распространенной операции. Встречал что апсерт делают отдельными 2 командами update; insert;( и наоборот). Перечислять все столбцы через запятую несколько раз бесит на этапе прототипа когда схема меняется. Я как-то использовал конструкцию COPY для оптимизации этого.

Sign up to leave a comment.