Oracle Developer👨🏻‍💻
3.22K subscribers
609 photos
68 videos
2 files
487 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Решение задачи. Update в PostgreSQL vs Oracle

Друзья, всем привет!

Сегодня разберем довольно простую задачку. Суть: написать update одной таблички с использованием другой.
Полная постановка здесь.

Итак

Решение в Oracle


1️⃣ Через использование подзапроса
update wallet w
set configuration = (
select wt.default_configuration
from wallet_template wt
where wt.id = 6
)
where w.configuration is null;


2️⃣ Колхоз через Merge

merge into wallet w
using (select default_configuration from wallet_template where id = 6) wt
on (1 = 1)
when matched then
update
set w.configuration = nvl(w.configuration, wt.default_configuration);


Решение в PostgreSQL

1️⃣ способ через подзапрос так же будет работать

2️⃣ Merge появился в PostgreSQL в 15й версии, поэтому вам может не подойти.

3️⃣ Расширенный SQL в PostgreSQL
update wallet w
set configuration = wt.default_configuration
from wallet_template wt
where wt.id = 6
and w.configuration is null;

Да, немого не привычно, но удивляет своей лаконичностью.
Хорошо ли читается? Мой коллега на ревью запнулся об этот запрос 🤷🏻‍♂️


К вопросу о миграции с одной СУБД на другую.
Можно ли взять и перенести на изи запросы с Оракла в ПГ?
Что-то да, что-то нет. Merge, например, придется переписывать
, если у вас не совсем актуальная версия PG.


Может быть вы знаете, какие-то другие варианты запросов? Напишите в чатике 💬

А вам какой синтаксис больше нравится?
Если Oracle - ставь 🔥
Если PostgreSQL - ставь 👍

Я, пожалуй, поставлю 👍

#postgresql #oracle #Denis_Kivilev #решениезадачи

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
🔥29👍231