sql - 为什么 CREATE USER 更新 PG_ROLES 表?
问题描述
当我使用“CREATE USER user1 WITH PASSWORD 'aaaaaaaa' 创建一个用户时,它还在 PG_ROLES 表中创建一个角色名称与“user1”相同的角色
这是执行此操作的触发器吗?还是默认行为?
解决方案
假设您没有运行非常旧(<8.1)版本的 Postgresql,CREATE USER的文档对此进行了解释:
CREATE USER 现在是 CREATE ROLE 的别名。唯一的区别是,当命令拼写为 CREATE USER 时,默认假定为 LOGIN,而当命令拼写为 CREATE ROLE 时假定为 NOLOGIN。
文档的“数据库角色”部分提供了更多详细信息:
角色的概念包含了“用户”和“组”的概念。在 8.1 之前的 PostgreSQL 版本中,用户和组是不同种类的实体,但现在只有角色。任何角色都可以充当用户、组或两者兼而有之。
系统目录文档解释说:
视图 pg_roles 提供对有关数据库角色的信息的访问。
因此,基于此可以预期,跑步CREATE USER
会对pg_roles
.
推荐阅读
- c# - 跟踪指标值应用程序洞察错误?
- loops - 时间复杂度和几何级数,嵌套循环
- angular - Angular 7:自定义异步验证器
- c++ - 如何正确地将 void * 值转换为 CString
- python - Python如何将这种类型的列表转换为字典
- php - 从给定的日期时间创建相同的时间差异
- scala - 在 Spark 中计算 Hive 表的统计信息
- kotlin - 如何用 kotlin 调用不同版本的类似扩展方法
- php - VsCode PHP-Intellisense 使用 composer 和 autoload.php
- spring-data-jpa - 如何将规范传递给 spring 数据的存储库接口上的自定义查询?