Postgres 9.1データベースには、パブリックスキーマ内のテーブルyksus1 .. ykssu9が含まれています。 pgAdminは以下のコードのような定義を表示します。 これらのテーブルをfirma1スキーマに移動する方法は?Postgresの公開スキーマから他のスキーマへの移動方法
firma1スキーマ内の他のテーブルには、これらのテーブルプライマリキーへの外部キーリファレンスがあります。これらのテーブルへの外部キー参照は、firma1スキーマ内のテーブルからのみです。
これらのテーブルには、データが含まれているものがあります。 テーブルをfirma1スキーマに移動すると、外部キーの参照もfirma1.yksusnテーブルに更新されます。 テーブル構造は変更できません。
主キーシーケンスはすでにfirma1スキーマにあるように見えますが、移動してはいけません。 GCC-4.4.realでコンパイルx86_64で、未知のLinux GNUで バージョンストリングのPostgreSQL 9.1.2(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