PostgreSQLデータベースにいくつかの共通のカラムを持つテーブルがいくつかあります。私はそれらの共通の列を新しいテーブルに移動し、この新しいテーブルからテーブルを継承すると良い考えだと思っていました。リファクタリング後テーブルを再作成せずに別のテーブルから継承させるためにテーブルのスキーマを変更する
create table foo_bar (
code varchar(9) primary key,
name varchar,
bar integer
);
:たとえば
create table foo (
code varchar(9) primary key,
name varchar
);
create table foo_bar (
bar integer
) inherits (foo);
問題がある、私は、この表を参照してくださいfoo_bar
で大量のデータだけでなく、多くの景色を眺めることができます。
foo_bar
の定義を変更して、テーブル内のデータを削除せずに上記の変更を行うことはできますか?
ハ!私はそれが簡単だろうとは思わなかった。私はそれをテストし、それは動作します。唯一の奇妙なことは、データベースをダンプすると、 'foo_bar'の定義に継承されたカラムが明示的に表示されることです。私はそれらを見るべきではない。しかし、彼らは本当に継承されています。もし私が 'foo_bar'からそれらの列を削除しようとすると、私はそれらが継承されることはできないというエラーを受け取ります。ありがとう! – piokuc