5.8. ģʽ

һ�� PostgreSQL ���ݿ⼯Ⱥ ����һ���������������ݿ⡣�û����û�����������Ⱥ�ķ�Χ�� �ǹ���ģ������������ݲ����ǹ���ġ��κθ�������������Ŀͻ����Ӷ�ֻ �ܷ�����һ�����ݿ�������ݣ������Ǹ������������������ġ�

ע��: һ����Ⱥ���û�����һ��Ҫ�з��ʼ�Ⱥ���������ݿ��Ȩ�ޡ� �����û�������˼�Dz�����ͬ���û���Ҳ���ǣ���ͬһ����Ⱥ������� ���ݿ��ﶼ�н� joe ���û�������ϵͳ�������ó� ֻ���� joe ����ijЩ���ݿ⡣

һ�����ݿ����һ������������ ģʽ�� ģʽ�ְ�����ģʽ���������������Ķ��󣬰����������ͣ������� �Լ���������ͬһ�������������ڲ�ͬ��ģʽ��ʹ�ö����ᵼ�³�ͻ�� ���磬schema1 �� myschema �����԰������� mytable �ı������ݿⲻͬ��ģʽ�����ϸ����ģ� һ���û����Է����������ӵ����ݿ��е�����ģʽ�еĶ��� ֻҪ����Ȩ�ޡ�

������Ҫģʽ��ԭ���кöࣺ

ģʽ�����ڲ���ϵͳ��ε�Ŀ¼��ֻ����ģʽ����Ƕ�ס�

5.8.1. ����һ��ģʽ

Ҫ����һ��ģʽ��ʹ������ CREATE SCHEMA�� ������ѡ���ģʽ���֡����磺

CREATE SCHEMA myschema;

Ҫ�������߷�����ģʽ�еĶ���д��һ�������ε������� ������ְ���ģʽ���Լ�����������������֮����һ�����ֿ���

schema.table

�����ڼ򻯣����ǽ�ֻ���۱���������������������������������ͣ��������ͺͺ�������

ʵ���ϣ���һ����﷨��

database.schema.table

����﷨Ҳ����ʹ�ã���Ŀǰ��ֻ��Ϊ�˺� SQL ��׼��ʽ�ϼ��ݡ� �����д��һ�����ݿ�������ô��������㵱ǰ���ӵ����ݿ�ͬ����

Ҫ����ģʽ�ﴴ��һ������

CREATE TABLE myschema.mytable (
 ...
);

�����ķ������κ���Ҫһ�������ֵĵط��������ã� �����޸ı���������������һ��Ҫ�������ݷ������

���һ��ģʽ�ǿյģ�����������Ķ����Ѿ�ɾ��������ôɾ��һ��ģʽ������

DROP SCHEMA myschema;

Ҫɾ��һ���������ж����ģʽ��ʹ��

DROP SCHEMA myschema CASCADE;

���� Section 5.10 ��ȡ�������Щ�������� �Ķ�����һ����Ƶ�������

ͨ�����봴��һ������ӵ�е�ģʽ����Ϊ����һ����������û� �ڶ������õ�ģʽ�еĻ�ķ����������﷨���£�

CREATE SCHEMA schemaname AUTHORIZATION username;

����������ʡ��ģʽ���֣���ʱģʽ�������û���ͬ���� ���� Section 5.8.6 ��ȡ������� �����ó��ϡ�

�� pg_ ��ͷ��ģʽ���DZ�����ϵͳʹ�õģ� �û����ܴ������������֡�

5.8.2. Public ģʽ

��ǰ���С�������û�������κ�ģʽ���־ʹ����˱� ȱʡʱ�������ı��Լ��������󣩶��Զ��ŵ�һ������"public" ��ģʽ��ȥ�ˡ�ÿ�������ݿⶼ����һ��������ģʽ����ˣ�����������ǵ�Ч�ģ�

CREATE TABLE products ( ... );

��

CREATE TABLE public.products ( ... );

5.8.3. ģʽ����·��

ȫ�Ƶ�����д�����dz��Ѿ�������������ò�Ҫ��Ӧ����ֱ�� д���ض���ģʽ������ˣ���ͨ��������δ���ε����� ���õģ�������������ֻ�б����֡�ϵͳͨ������һ������·�� ���ж�һ���������ĸ������·����һ����Ҫ���ҵ�ģʽ�б� ������·�����ҵ��ĵ�һ����������ѡ���ı����������·���� û��ƥ�����ô�ͱ���һ�����󣬼�ʹƥ�������������ݿ������� ģʽ�д���Ҳ��ˡ�

������·���еĵ�һ��ģʽ������ǰģʽ�������������ĵ�һ��ģʽ֮�⣬ �������� CREATE TABLE û������ģʽ����ʱ���½��� ���ڵĵط���

Ҫ��ʾ��ǰ����·����ʹ����������

SHOW search_path;

��ȱʡ�������У���������Ķ�����

 search_path
--------------
 $user,public

��һ��Ԫ��������Ҫ����һ���͵�ǰ�û�ͬ����ģʽ�� ��Ϊ��û��������ģʽ���ڣ�����������¼�����ԡ��ڶ���Ԫ��ָ�� �����Ѿ������Ĺ���ģʽ��

����·���д��ڵĵ�һ��ģʽ�Ǵ����¶����ȱʡλ�á� �����Ϊʲôȱʡ�Ķ��󶼻ᴴ���� public ģʽ���ԭ�� ������κ��������������ö��󣬶���û����ģʽ���� �����޸ģ����ݱ�������߲�ѯ�������ôϵͳ����� ����·����ֱ���ҵ�һ��ƥ��Ķ�����ˣ���ȱʡ������� �κ�δ���εķ���ͬ��Ҳֻ������ public ģʽ��

Ҫ���µ�ģʽ�ŵ�·��������������

SET search_path TO myschema,public;

������������ʡ���� $user ����Ϊ���� ������������Ҫ������Ȼ�����ǾͿ��Բ��ü�ģʽ���η��� ���ˣ�

DROP TABLE mytable;

ͬ������Ϊ myschema ��·���еĵ�һ��Ԫ�أ� �¶���ȱʡʱ�����������

����Ҳ����д��

SET search_path TO myschema;

Ȼ�������������ȷ���εĻ����Ͳ����ٷ��� public ģʽ�ˡ� public ģʽû���κ�����֮����ֻ������ȱʡʱ�ʹ��ڡ� ����Ҳ���԰���ɾ���ˡ�

�ּ� Section 9.19 ��ȡ��������ģʽ����·���ķ�����

����·�������������������������Լ�����������������ʽ�ͱ�������ȫ��ͬ�� �������ͺͺ����������������һ���������Ρ��������Ҫ�ڱ��ʽ��дһ�������εIJ��������֣� ������һ�������Ҫ���������ôд

OPERATOR(schema.operator)

������Ϊ�˱����﷨���塣������һ������

SELECT 3 OPERATOR(pg_catalog.+) 4;

ʵ��������ͨ����������·��Ѱ�Ҳ������� �����Ͳ���д��ô�ѿ��Ķ����ˡ�

5.8.4. ģʽ��Ȩ��

ȱʡʱ���û�������ģʽ�в������������еĶ��� Ϊ�������ǿ��ü���ģʽ����������Ҫ��ģʽ�ϸ��� USAGE Ȩ�ޡ�Ϊ�����û�ʹ��ģʽ�еĶ������ǿ�����Ҫ��������Ȩ�ޣ� ֻҪ���ʺϸö���ġ�

�û�Ҳ���������ڱ��˵�ģʽ�ﴴ������Ҫ������ô���� ������Ҫ�����ڸ�ģʽ�ϵ� CREATE Ȩ�ޡ� ��ע�⣬ȱʡʱ��ÿ���˶��� public ģʽ�� �� CREATE Ȩ�ޡ��������������п������ӵ� ָ�����ݿ��ϵ��û������ﴴ����������㲻������ô���� ����Գ������Ȩ�ޣ�

REVOKE CREATE ON public FROM PUBLIC;

����һ�� "public" ��ģʽ���ڶ��� "public" ��˼��"�����û�"�� ��һ�������Ǹ���ʶ�������ڶ������Ǹ��ؼ��֣������в�ͬ�Ĵ�Сд�� ��ס������ Section 4.1.1 ���� ˵����ԭ�򡣣�

5.8.5. ϵͳ��ģʽ

���� public ���û�������ģʽ֮�⣬ ÿ�����ݿⶼ����һ�� pg_catalog ģʽ�������� ϵͳ������������������ͣ������Ͳ�������pg_catalog ��������·���е�һ���֡������û����ȷ������·���У���ô ������������·�����ģʽ֮ǰ�����������ͱ�֤�����õ����� ���ǿ��������ء��������������ȷ�ذ�pg_catalog �����������·���ĺ��棬����������û���������ָ������õ����ֵĻ���

�� PostgreSQL �汾 7.3 ֮ǰ�� �� pg_ ��ͷ�ı������DZ����ġ������������ ��������ȷ���ˣ������Ҫ������Դ��������ı����֣� ֻҪ���ڷ�ϵͳģʽ�������������û��Dz�Ҫʹ�����������֣� �Ա�֤�Լ�����������°汾��ͻ����Щ�汾Ҳ��ᶨ��һЩ�� ��ı�ͬ���ı�����ȱʡ����·���У�һ������ı�������� ���ý�����Ϊϵͳ����ϵͳ��������ѭ��pg_ ��ͷ�Ĵ�ͳ����ˣ�ֻҪ��ı�����pg_ ��ͷ�� �Ͳ���������ε��û������ֳ�ͻ��

5.8.6. ʹ�÷�ʽ

ģʽ�����Զ��ַ�ʽ��֯������ݡ�������һЩ����ʹ�õ�ģʽ�� ����Ҳ��������ȱʡ�����еõ�֧�֣�

5.8.7. ��ֲ��

�� SQL ��׼���ͬһ��ģʽ��Ķ����ɲ�ͬ���û����еĸ����Dz����ڵġ� ���ң���Щʵ�ֲ������㴴�������ǵ������߲�ͬ����ģʽ��ʵ���ϣ� ģʽ���û��ĸ�������Щֻʵ���˱�׼�й涨�Ļ���ģʽ֧�ֵ����ݿ�ϵͳ�X����һ���ġ� ��ˣ�����û����Ƕ����ּ������Σ�ʹ���������� username.tablename��ɡ� �����Ϊÿ���û���������һ��ģʽ����ʵ���Ͼ��� PostgreSQL ����Ϊ��

ͬ������ SQL ��׼��Ҳû�� public ģʽ�ĸ�� Ϊ������޶ȵ���ѭ��׼���㲻Ӧ��ʹ�ã�����������Ӧ��ɾ���� public ģʽ��

��Ȼ����Щ SQL ���ݿ�ϵͳ���ܸ���û��ʵ��ģʽ��������ͨ������ �������������Ƶģ������ݿ�������ṩģʽ��֧�֡� �������Ҫ����Щϵͳ�ϸɻ��ô����޶ȵ���ֲ�����Ը�������ģʽ��