Re: dudas con schemas

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Jose Alberto Sanchez Nieto <albertosanchez(at)hiperusera(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: dudas con schemas
Date: 2008-02-01 20:29:12
Message-ID: 20080201202912.GW5172@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jose Alberto Sanchez Nieto escribió:

> En resumen amigos: Todas las tablas, indices, funciones, etc las
> generamos inicialmente mediante scripts así que por eso pensamos que si
> creábamos el usuario y se le podía asignar por defecto un schema y sus
> tablespace,

Respuesta breve: luego de crear un usuario y su respectivo schema,
puedes "asignarle" este schema usando

ALTER USER <user> SET search_path = '$user';

A partir de ahi, todos los objetos que ese usuario cree iran a parar a
ese schema. Ejemplo abajo.

Mantengo mi opinion de que hacerlo de esta manera es engorroso. Pero si
quieres hacerlo, se puede.

alvherre=# create user aaa;
CREATE ROLE
alvherre=# create user bbb;
CREATE ROLE
alvherre=# create user ccc;
CREATE ROLE
alvherre=# alter user aaa set search_path = '$user';
ALTER ROLE
alvherre=# alter user bbb set search_path = '$user';
ALTER ROLE
alvherre=# alter user ccc set search_path = '$user';
ALTER ROLE
alvherre=# create schema aaa authorization aaa;
CREATE SCHEMA
alvherre=# create schema bbb authorization bbb;
CREATE SCHEMA
alvherre=# create schema ccc authorization ccc;
CREATE SCHEMA
alvherre=# \q
05:27 perhan: backend 0$ psql alvherre aaa
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

alvherre=> create table foo ();
CREATE TABLE
alvherre=> \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
aaa | foo | table | aaa
(1 row)

alvherre=> \q
05:28 perhan: backend 0$ psql alvherre bbb
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

alvherre=> create table foo ();
CREATE TABLE
alvherre=> \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
bbb | foo | table | bbb
(1 row)

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2008-02-01 22:25:46 Re: Acceso a PostgreSQL desde C
Previous Message Alvaro Herrera 2008-02-01 20:14:57 Re: Cacenlar un insert