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();