Удалить один из отделов, а сотрудника переместить в другой отдел

мне нужно написать запрос, который удаляет из таблицы "Справочник_отделов" один отдел, и обновляет запись в другой таблице "Оклад_сотрудников" (заменяет id удаленного отдела на другой, который выбрал я). Логика должна быть примерно такой -

DELETE FROM Справочник_отделов WHERE id = 2 UPDATE Оклад_сотрудников SET "ID Отдела"=3 WHERE "Табельный номер" = 1002); я так понимаю, это составной запрос, и, по идее, должен использоваться оператор with


Ответы (1 шт):

Автор решения: Akina

Лучше сначала обновить, а потом удалить. Не надо будет возиться с отложенной проверкой ограничений.

WITH 
cte AS (
    UPDATE employees
    SET department_id = 3
    WHERE department_id = 2 
)
DELETE 
FROM department
WHERE department_id = 2;

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=2e1ed69c011f76ac8f2481ec4a523bfc

→ Ссылка