ver una tablas tabla postgres otra listar esquemas esquema desde datos crear copiar consultas cero aprender sql postgresql postgresql-9.1

sql - una - Cómo mover tablas de público a otro esquema en Postgres



listar tablas postgresql (1)

ALTER TABLE yksus1 SET SCHEMA firma1;

Más detalles en el manual: http://www.postgresql.org/docs/current/static/sql-altertable.html

Los índices asociados, las restricciones y las secuencias que pertenecen a las columnas de la tabla también se mueven.

Sin embargo, no estoy seguro acerca de la función de activación, pero existe una función ALTER FUNCTION .. SET SCHEMA ... también.

La base de datos de Postgres 9.1 contiene las tablas yksus1 .. ykssu9 en un esquema público. pgAdmin muestra esas definiciones como en el código a continuación. ¿Cómo mover esas tablas al esquema firma1?

Otras tablas en el esquema firma1 tienen referencias de clave externa a esas claves primay de tabla. Las referencias de clave externa a esas tablas solo se obtienen de tablas en el esquema firma1.

Algunas de esas tablas contienen datos. Si las tablas se mueven al esquema firma1, las referencias de clave externa también deberían actualizarse a las tablas firma1.yksusn. Las estructuras de tablas no pueden cambiarse.

Parece que las secuencias de claves primarias ya están en el esquema firma1, por lo que no deben moverse. Versión de la cadena PostgreSQL 9.1.2 en x86_64-unknown-linux-gnu, compilada por gcc-4.4.real (Debian 4.4.5-8) 4.4.5, de 64 bits

CREATE TABLE yksus1 ( yksus character(10) NOT NULL DEFAULT ((nextval(''firma1.yksus1_yksus_seq''::regclass))::text || ''_''::text), veebis ebool, nimetus character(70), "timestamp" character(14) DEFAULT to_char(now(), ''YYYYMMDDHH24MISS''::text), username character(10) DEFAULT "current_user"(), klient character(40), superinden character(20), telefon character(10), aadress character(50), tlnr character(15), rus character(60), CONSTRAINT yksus1_pkey PRIMARY KEY (yksus) ); ALTER TABLE yksus1 OWNER TO mydb_owner; CREATE TRIGGER yksus1_trig BEFORE INSERT OR UPDATE OR DELETE ON yksus1 FOR EACH STATEMENT EXECUTE PROCEDURE setlastchange();

Otras tablas son similares:

CREATE TABLE yksus2 ( yksus character(10) NOT NULL DEFAULT ((nextval(''firma1.yksus2_yksus_seq''::regclass))::text || ''_''::text), nimetus character(70), "timestamp" character(14) DEFAULT to_char(now(), ''YYYYMMDDHH24MISS''::text), osakond character(10), username character(10) DEFAULT "current_user"(), klient character(40), superinden character(20), telefon character(10), aadress character(50), tlnr character(15), rus character(60), CONSTRAINT yksus2_pkey PRIMARY KEY (yksus), CONSTRAINT yksus2_osakond_fkey FOREIGN KEY (osakond) REFERENCES yksus2 (yksus) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE ); ALTER TABLE yksus2 OWNER TO mydb_owner; CREATE TRIGGER yksus2_trig BEFORE INSERT OR UPDATE OR DELETE ON yksus2 FOR EACH STATEMENT EXECUTE PROCEDURE setlastchange();