启用架构继承
当心
使用 ALTER SCHEMA 启用继承权限DEFAULT INCLUDE PRIVILEGES 仅影响新创建的表和视图。
此设置不会影响已存在的表和视图。
默认情况下,在架构级别禁用继承的权限。如果为数据库启用了继承的权限,您可以使用 CREATE SCHEMA 和 ALTER SCHEMA 允许数据库的表和视图继承架构权限。除非显式排除,否则在架构上授予的权限将自动由其中的所有新表和视图继承。
有关哪些表和视图从哪些架构继承权限的信息,请参阅 INHERITING_OBJECTS。
有关每个表或视图继承哪些权限的信息,请参阅 INHERITED_PRIVILEGES。
注意
如果针对数据库禁用继承的权限,则对其架构启用继承不起作用。尝试启用可能会返回以下消息:
Inherited privileges are globally disabled; schema parameter is set but has no effect.
启用架构权限继承对现有的表和视图不起作用。您必须使用 ALTER TABLE 和 ALTER VIEW 针对现有的表和视图显式设置架构继承。您还可以分别使用 CREATE TABLE/ALTER TABLE 和 CREATE VIEW/ALTER VIEW 显式排除表和视图继承架构权限。
您可以在架构创建期间使用以下语句启用架构权限继承:
=> CREATE SCHEMA s1 DEFAULT INCLUDE PRIVILEGES;
如果架构已经存在,您可以使用 ALTER SCHEMA 让所有新创建的表和视图继承架构的权限。在此语句之前在架构上创建的表和视图不受影响:
=> ALTER SCHEMA s1 DEFAULT INCLUDE PRIVILEGES;
在架构上启用继承的权限后,可以使用 GRANT(架构) 将架构权限授予用户和角色:
=> GRANT USAGE, CREATE, SELECT, INSERT ON SCHEMA S1 TO PUBLIC;
GRANT PRIVILEGE