Postgres: как объявить переменную типа пользователя? - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу написать небольшой скрипт для предоставления разрешений.Сценарий работает, если я ввожу пользователя непосредственно в каждый запрос, но более эффективно использовать переменную, но я не могу найти, какой тип объявить его как.

DO $$

DECLARE
usr ??? := myuser;

BEGIN

GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA public 
TO usr;

GRANT ALL PRIVILEGES ON SCHEMA public to usr;

END $$

1 Ответ

0 голосов
/ 28 февраля 2019

Для этого вам нужен динамический SQL:

DO
$$DECLARE
   usr text := 'myuser' ;
BEGIN
   EXECUTE format('GRANT SELECT, INSERT, UPDATE, DELETE '
                  'ON ALL TABLES IN SCHEMA public ' 
                  'TO %I',
                  usr);
END;$$;

Второй оператор работает аналогично.

...