19
Postgres 9.1數據庫包含公共架構中的表yksus1 .. ykssu9。 pgAdmin以下面的代碼顯示了這些定義。 如何將這些表移動到firma1模式?如何在Postgres中將公共表移動到其他架構
firma1模式中的其他表具有對這些表主鍵的外鍵引用。對這些表的外鍵引用僅來自firma1模式中的表。
其中一些表包含數據。 如果表移動到firma1模式,那麼外鍵引用也應更新爲firma1.yksusn表。 表結構不能更改。
它看起來像主鍵序列已經在firma1模式,所以這些不應該移動。 版串的PostgreSQL 9.1.2在x86_64未知-Linux的GNU,與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