Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 是否自动更改Postgres表的所有者?_Postgresql_Alter Table_Grant - Fatal编程技术网

Postgresql 是否自动更改Postgres表的所有者?

Postgresql 是否自动更改Postgres表的所有者?,postgresql,alter-table,grant,Postgresql,Alter Table,Grant,我有一个由许多用户共享的数据库,所有用户都在一个组“example”中,数据库中的绝大多数对象都属于“example”。偶尔,用户会创建一个新表-该表被分配给创建它的用户,因此其他用户无法更改新表 是否有办法将表的所有权自动设置为组“示例”而不是创建表的用户,也不是在创建选项卡之后设置触发器的方法,也不是设置组/权限的方法,这样所有用户都将被视为对象的所有者,而不管实际创建对象的是谁?您可以通过以下方式更改默认权限: 更改模式public中的默认权限将SELECT表授予public 或授予写访问

我有一个由许多用户共享的数据库,所有用户都在一个组“example”中,数据库中的绝大多数对象都属于“example”。偶尔,用户会创建一个新表-该表被分配给创建它的用户,因此其他用户无法更改新表


是否有办法将表的所有权自动设置为组“示例”而不是创建表的用户,也不是在
创建选项卡之后设置触发器的方法,也不是设置组/权限的方法,这样所有用户都将被视为对象的所有者,而不管实际创建对象的是谁?

您可以通过以下方式更改默认权限:

更改模式public中的默认权限将SELECT表授予public

或授予写访问权限:

更改模式公共中的默认权限将表上的SELECT、INSERT、UPDATE、DELETE授予公共


您可能希望使用
事件触发器

这在9.3以后的所有版本的Pg中都是可行的,但根据您的版本,可能需要不同的方法,因为事件触发器的结构已经显著改进


在早期版本中,您可以在表目录中查找当前用户拥有的项。在较新版本中,您可以使用
pg\u event\u trigger\u ddl\u命令
获取所需信息。您希望在ddl端运行该命令。

我真正需要的是
ALTER
权限-只有当一个用户创建一个新的表时,表的所有者才可以使用这些权限,他们被指定为所有者,而不是公共组。请重试