Postgres 9.1 データベースには、public スキーマにテーブル yksus1 .. ykssu9 が含まれています。pgAdmin は、以下のコードのようにこれらの定義を表示します。これらのテーブルを firma1 スキーマに移動するにはどうすればよいでしょうか?
firma1 スキーマ内の他のテーブルには、それらのテーブルの主キーへの外部キー参照があります。それらのテーブルへの外部キー参照は、firma1 スキーマ内のテーブルからのみ行われます。
これらのテーブルの一部にはデータが含まれています。テーブルを firma1 スキーマに移動すると、外部キー参照も firma1.yksusn テーブルに更新される必要があります。テーブル構造は変更できません。
主キーシーケンスはすでに firma1 スキーマにあるため、移動しないでください。バージョン文字列 PostgreSQL 9.1.2 (x86_64-unknown-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();
ベストアンサー1
ALTER TABLE yksus1
SET SCHEMA firma1;
詳細はマニュアルをご覧ください:静的テーブル
テーブル列が所有する関連するインデックス、制約、およびシーケンスも移動されます。
トリガー機能についてはよくわかりませんが、同等の機能もありますALTER FUNCTION .. SET SCHEMA ...
。