ALTER TABLE ADD および DROP COLUMN の例
次の例は、ALTER TABLE を使用して基本テーブル列を追加した後に削除する方法、および依存オブジェクトがある列を削除する方法を示しています。
基本列の追加と削除
次の例では、スタンドアロンの FEEDBACK_SCORE 列を USERS テーブルに追加します。この列には 1 つの整数が含まれます。この列のデフォルト値は NULL です (フィードバックスコアなし)。
まず、PG_TABLE_DEF カタログテーブルにクエリして、USERS テーブルのスキーマを表示します。
column | type | encoding | distkey | sortkey --------------+------------------------+----------+---------+-------- userid | integer | delta | true | 1 username | character(8) | lzo | false | 0 firstname | character varying(30) | text32k | false | 0 lastname | character varying(30) | text32k | false | 0 city | character varying(30) | text32k | false | 0 state | character(2) | bytedict | false | 0 email | character varying(100) | lzo | false | 0 phone | character(14) | lzo | false | 0 likesports | boolean | none | false | 0 liketheatre | boolean | none | false | 0 likeconcerts | boolean | none | false | 0 likejazz | boolean | none | false | 0 likeclassical | boolean | none | false | 0 likeopera | boolean | none | false | 0 likerock | boolean | none | false | 0 likevegas | boolean | none | false | 0 likebroadway | boolean | none | false | 0 likemusicals | boolean | none | false | 0
次に、feedback_score 列を追加します。
alter table users add column feedback_score int default NULL;
USERS から FEEDBACK_SCORE 列を選択し、追加されたことを確認します。
select feedback_score from users limit 5;
feedback_score ---------------- NULL NULL NULL NULL NULL
列を削除して元の DDL に戻します。
alter table users drop column feedback_score;
依存オブジェクトがある列の削除
以下の例では、依存オブジェクトがある列を削除します。その結果、依存オブジェクトも削除されます。
初めに、もう一度 FEEDBACK_SCORE 列を USERS テーブルに追加します。
alter table users add column feedback_score int default NULL;
次に、USERS テーブルから USERS_VIEW というビューを作成します。
create view users_view as select * from users;
次に、USERS テーブルから FEEDBACK_SCORE 列の削除を試みます。この DROP ステートメントではデフォルト動作 (RESTRICT) を使用します。
alter table users drop column feedback_score;
Amazon Redshift は列に別のオブジェクトが依存しているため、列を削除できないことを示すエラーメッセージが表示されます。
今度はすべての依存オブジェクトを削除するため CASCADE を指定して、FEEDBACK_SCORE 列の削除を再度試みます。
alter table users drop column feedback_score cascade;