pg中的用户与模式是分开的,不像是oracle中用户创建完后与模式是基本同一个东西。
pg中有个默认的模式叫public,是所有用户的默认的模式,如果没有与用户同名的模式存在,那么用户的对象将放置在public模式下面。pg中对象的搜索路径是:
show search_path
""$user",public"
默认是按当前用户名模式,然后在public模式。
所以是建议创建完用户后,在创建一个与用户名相同的模式,这样用户创建的对象就放在用户名相同的模式下面了。
查看当前模式
select current_schema;
修改角色的搜索路径
alter role finona set search_path='finance';
创建用户专享的schema
CREATE SCHEMA sharedschema AUTHORIZATION scarlett;
别的角色指定这个schema后,在创建对象的时候会报schema不存在,这个挺坑爹的
另外在修改搜索路径后,需要在新的会话中设置才能生效