postgresql
継承
サーチ…
備考
PostgreSQLで継承を使用する理由については、ここで説明しています。http : //stackoverflow.com/a/3075248/653378
子テーブルの作成
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);
3つのテーブルは次のようになります。
ユーザー
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
シンプルユーザー
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
users_with_password
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
パスワード | テキスト |
テーブルの変更
2つの簡単なテーブルを作成しましょう:
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
列を追加する
ALTER TABLE simple_users ADD COLUMN password text;
シンプルユーザー
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
パスワード | テキスト |
親テーブルに同じ列を追加すると、両方の列の定義がマージされます。
ALTER TABLE users ADD COLUMN password text;
注意:子「simple_users」のカラム「password」の定義をマージ
列を削除する
変更されたテーブルを使用する:
ALTER TABLE users DROP COLUMN password;
ユーザー
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
シンプルユーザー
カラム | タイプ |
---|---|
ユーザー名 | テキスト |
Eメール | テキスト |
パスワード | テキスト |
最初にカラムをsimple_users
追加してから、PostgreSQLはこのカラムが削除されないようにします。
今、別の子テーブルがあれば、そのpassword
列は削除されています。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow