Encontraste la abreviatura para establecer privilegios para todos los existentes tablas en el esquema dado. El manual aclara:
(pero tenga en cuenta que ALL TABLES se considera que incluye vistas y tablas extranjeras ).
Énfasis en negrita mío. serial las columnas se implementan con nextval() en una secuencia como columna predeterminada y, citando el manual:
Para secuencias, este privilegio permite el uso de currval y nextval funciones.
Entonces, si hay serial columnas, también querrá conceder USAGE (o ALL PRIVILEGES ) en secuencias
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
Nota:las columnas de identidad en Postgres 10 o posterior usan secuencias implícitas que no requieren privilegios adicionales. (Considere actualizar serial columnas.)
¿Qué pasa con nuevo? objetos?
También te interesarán los DEFAULT PRIVILEGES para usuarios o esquemas:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
Esto establece privilegios para objetos creados en el futuro automáticamente, pero no para objetos preexistentes.
Los privilegios predeterminados son solo aplicado a los objetos creados por el usuario objetivo (FOR ROLE my_creating_role ). Si se omite esa cláusula, por defecto el usuario actual ejecuta ALTER DEFAULT PRIVILEGES . Para ser explícito:
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
Tenga en cuenta también que todas las versiones de pgAdmin III tienen un error sutil y display privilegios predeterminados en el panel SQL, incluso si no se aplican al rol actual. Asegúrese de ajustar el FOR ROLE cláusula manualmente al copiar el script SQL.