База данных Postgres 9.1 содержит таблицы yksus1 .. ykssu9 в общедоступной схеме. pgAdmin показывает эти определения, как в коде ниже. Как переместить эти таблицы в схему firma1?Как перемещать таблицы из общедоступной в другую схему в Postgres
Другие таблицы в схеме firma1 имеют ссылки на внешние ключи для этих ключей таблицы. Ссылки на внешние ключи к этим таблицам относятся только к таблицам в схеме firma1.
Некоторые из этих таблиц содержат данные. Если таблицы перенесены в схему firma1, ссылки на внешние ключи также будут обновлены до таблиц firma1.yksusn. Структуры таблиц не могут быть изменены.
Похоже, что первичные ключевые последовательности уже находятся в схеме firma1, поэтому они не должны перемещаться. версия строки PostgreSQL 9.1.2 на x86_64-неизвестно-Linux-гну, составленный GCC-4.4.real (Debian 4.4.5-8) 4.4.5, 64-битный
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();
другие таблицы похожи:
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();
Позаботьтесь о столкновениях имен, хотя. Если какая-либо из таблиц использует те же имена для индексов, ограничений и т. Д. В качестве целевой схемы, запрос будет терпеть неудачу. – Tim