Работаешь дата инженером не первый год, а PostgreSQL всё ещё может удивить 😅
Недавно столкнулся с ситуацией, которая, казалось бы, должна быть довольно распространённой.
Нужно переименовать таблицу через
ALTER TABLE ... RENAME, но ты не OWNER этой таблицы. Права на переименования раздать тоже нельзя
Вроде штука достаточно распространненая должна быть, но раньше я как-то не сталкивался с такой задачей.
В итоге решение оказалось довольно интересным —
SECURITY DEFINER.
Можно создать процедуру, которая будет выполняться с правами своего владельца, и дать пользователю доступ только к её вызову.
CREATE PROCEDURE ...
SECURITY DEFINER
В результате пользователь может выполнить нужное переименование, не получая права OWNER на сами таблицы.
Я в такие моменты всегда задаюсь вопросом: "А точно ли я все эти годы чем-то занимаюсь, если мне еще не встречались такие вещи?)"
А у вас были подобные моменты, когда внезапно узнаёшь что-то новое в технологии, с которой давно работаешь?