2017-03-22 9 views
0

私はデータベースを持っており、私が望むデータでビューを作成しました。私はこのようなテキストの列を追加したいSQLのビューに新しい列を追加

n  | value | 
----------+---------+ 
50404791 |  112 | 
    5034591 |  164 | 
50280287 |  31 | 

:データはこのような何かに見える

n  | value | status | 
----------+---------+--------+ 
50404791 |  112 |default | 
    5034591 |  164 |biggest | 
50280287 |  31 |smallest| 

を私はAlter Table Table1 Add Column status text ;を試してみましたが、テキストデータ型ではないように思えます。どのような提案をする?

+0

'変更テーブル表1ステータステキストを追加する:「これを試すことができますか? –

答えて

2

(ビューでSELECT *を使用するために、とにかく避けるため、覚えておいてください)

CREATE TABLE TABLE1 (ID INTEGER); 
CREATE VIEW V1 AS SELECT * FROM TABLE1; 
INSERT INTO TABLE1 VALUES (0); 

ALTER TABLE TABLE1 ADD COLUMN STATUS TEXT;  
INSERT INTO TABLE1 (ID, STATUS) VALUES (1, 'aaa'); 

SELECT * FROM V1; 
DROP VIEW V1; 

CREATE VIEW V1 AS SELECT * FROM TABLE1; 
SELECT * FROM V1; 

出力:

id 
1 0 
2 1 

    id status 
1 0 NULL 
2 1 aaa 
0

ビューを削除して再作成する必要があります。既存のビューを変更することはできません。そして、はい、テキストはデータ型です。

Rextester.comでテスト
0

私はあなたができるpostgresql.org

に答えを見つけましたビューを右クリックし、 CREATE SCRIPT uncommeを選択してpgAdminから行いますnt:DROP VIEW; CREATE VIEWを編集して列を削除します。

ただし、ビューを他のビューで使用する場合は、それらをすべて削除してください。 を順番に再作成する必要があります。

また、 のpg_catalog.pg_attributeテーブルから列を削除することもできます。必ずしかし、あなたはあなた は以下を使用して、あなたが他のテーブルに 列を削除しないようにするだけの...を削除する知っていることを確認してください:

のpg_attribute attrelid = regclassデータ「yourviewname」と attname =「columnnametodrop」から削除

あなたは正しい選択 を持ってまで、第1選択のカップルを行うことをお勧め:

attrelid選択:: regclassデータ何であれ、*のpg_attributeから attnameは= 'columnnametodrop'

として

Johan Nel。

関連する問題