Il database di Postgres 9.1 contiene le tabelle yksus1 .. ykssu9 nello schema pubblico. pgAdmin mostra quelle definizioni come nel codice qui sotto. Come spostare tali tabelle nello schema firma1?come spostare tabelle da pubblico ad altro schema in Postgres
Altre tabelle nello schema firma1 hanno riferimenti a chiavi esterne a quelle chiavi di prim'ordine. I riferimenti a chiavi esterne a tali tabelle provengono solo da tabelle nello schema firma1.
Alcune di queste tabelle contengono dati. Se le tabelle vengono spostate nello schema firma1, i riferimenti di chiavi esterne devono essere aggiornati anche alle tabelle firma1.yksusn. Le strutture di tabella non possono essere modificate.
Sembra che le sequenze di chiavi primarie siano già nello schema firma1, quindi non devono essere spostate. stringa di versione PostgreSQL 9.1.2 su x86_64-unknown-linux-gnu, compilato da gcc-4.4.real (Debian 4.4.5-8) 4.4.5, a 64 bit
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();
altre tabelle sono simili:
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();
Attenzione però per gli scontri sul nome. Se una delle tabelle utilizza gli stessi nomi per indici, vincoli ecc. Come lo schema di destinazione, la query avrà esito negativo. – Tim