2016-11-02 5 views
2

У меня есть база данных, разделяемая многими пользователями, все пользователи находятся в группе «пример», и подавляющее большинство объектов в базе данных принадлежат «примеру». Очень редко пользователь создает новую таблицу - эта таблица назначается пользователю, который ее создал, и поэтому другие пользователи не могут изменить новую таблицу.Смена владельца таблицы Postgres автоматически?

Есть ли способ, чтобы иметь право собственности таблицы автоматически устанавливается в группу «например», а не тот пользователь, который создал таблицу или способ создать триггер, который происходит послеCREATE TABALEили способ настроить группу/разрешения, чтобы все пользователи считались владельцами объектов независимо от того, кто их создал?

+1

Попробуйте [Триггеры событий] (https://www.postgresql.org/docs/current/static/event-triggers.html) – Abelisto

ответ

0

Вы можете изменить привилегии Значение по умолчанию так:

ALTER DEFAULT ЛЬГОТЫ В SCHEMA общественного GRANT ВЫБРАТЬ НА ТАБЛИЦЫ общественности;

или дать доступ на запись:

ALTER DEFAULT ЛЬГОТЫ В SCHEMA публичной GRANT SELECT, INSERT, UPDATE, DELETE ON ТАБЛИЦЫ общественности;

https://www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html

+0

Мне действительно нужны привилегии 'ALTER' - они доступны только владельцу таблицы, когда один пользователь создает новую, которую они назначают как владелец, а не как общая группа. –

0

Вы, вероятно, хотите использовать EVENT TRIGGER

Это выполнимо во всех версиях Pg от 9.3 вперед, но в зависимости от версии может потребоваться различные подходы, поскольку структуры для триггеров событий значительно улучшились.

В более ранних версиях вы можете просмотреть каталоги таблиц для предметов, принадлежащих текущему пользователю. В новых версиях вы можете использовать pg_event_trigger_ddl_commands, чтобы получить необходимую информацию. вы хотите запустить команду на конце ddl.