我想编写一个小的脚本来授予权限。如果我直接在每个查询中键入用户的内容,该脚本就可以工作,但是使用变量会更有效,但是我找不到将其声明为哪种类型。
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 $$
答案 0 :(得分:1)
为此您需要动态SQL:
DO
$$DECLARE
usr text := 'myuser' ;
BEGIN
EXECUTE format('GRANT SELECT, INSERT, UPDATE, DELETE '
'ON ALL TABLES IN SCHEMA public '
'TO %I',
usr);
END;$$;
第二条语句的工作原理类似。