此页面提供有关创建用户定义模式的最佳指导。
在阅读本页之前,请执行以下操作:
以下是创建和使用用户定义模式时的一些建议:
如果在集群中创建多个具有相同名称的对象(例如:表或视图),请在同一数据库中的不同用户定义模式中执行此操作。
如果出于访问或组织目的想要分离较低级别的对象(例如,一组表或视图),建议用户创建定义的架构,然后在用户定义的架构中创建对象。
不要在预加载的defaultdb
数据库中创建用户定义的模式。
创建用户定义的架构时,记下对象的所有者。可以在带有关键字CREATE SCHEMA
的语句中指定所有者。
当引用数据库中较低级别的对象(例如:表)时,如果数据库中有多个具有相同名称的对象,则在较低级别的对象引用中指定模式名称可以防止用户尝试访问错误的对象。
若希望将集群中的表和索引分开,这样一个用户管理一组表,而另一个用户管理索引。
CREATE DATABASE
下添加以下语句:
use test;
create user if not exists guar;
grant create on database test to guar;
create user if not exists aml94;
grant create on database test to aml94;
两组语句在数据库中创建名为guar
和aml94
的用户,对test
数据库具有CREATE
权限。CREATE
特权将允许每个用户在数据库中创建表。
在此基础下,为每个用户的定义模式,用CREATE SCHEMA
:
drop schema if exists guar_schema CASCADE;
create schema guar_schema AUTHORIZATION guar;
drop schema if exists aml94_schema CASCADE;
create schema aml94_schema AUTHORIZATION aml94;
在每个用户定义模式的create schema
语句下,添加一条GRANT
语句将模式权限授予其他用户。
GRANT USAGE ON SCHEMA guar_schema to aml94;
GRANT USAGE ON SCHEMA aml94_schema to guar;