DB 생성 이후, 생성된 DB의 public schema에 적용
CREATE OR REPLACE FUNCTION grant_user()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
DECLARE r RECORD;
BEGIN
For r IN select * from pg_event_trigger_ddl_commands() LOOP
if r.object_type = 'table'
then
EXECUTE FORMAT ('grant SELECT ON TABLE %s TO group_s',r.object_identity);
EXECUTE FORMAT ('grant INSERT ON TABLE %s TO group_i',r.object_identity);
EXECUTE FORMAT ('grant DELETE ON TABLE %s TO group_d',r.object_identity);
EXECUTE FORMAT ('grant UPDATE ON TABLE %s TO group_u',r.object_identity);
END IF;
END LOOP;
end;
$$;
CREATE EVENT TRIGGER grant_when_create_table ON ddl_command_end
when tag in ('SELECT INTO','CREATE TABLE','CREATE TABLE AS')
EXECUTE PROCEDURE grant_user();'DBA > Postgresql' 카테고리의 다른 글
| Failover & Failback (pg_rewind) (1) | 2024.05.03 |
|---|---|
| POSTGRESQL Archieve Log를 통한 복구 TEST (0) | 2024.05.03 |
| PostgreSQL Type(JSON과 JSONB 타입) (0) | 2024.05.03 |
| PostgreSQL 테이블 생성 및 변경 (1) | 2024.05.03 |
| Postgresql 사이즈(테이블, 스키마 등) (0) | 2024.04.25 |