2012-08-13 3 views
83

にブール列を追加するには、falseのpostgresql - テーブルセットのデフォルト

ALTER TABLE users 
ADD "priv_user" BIT 
ALTER priv_user SET DEFAULT '0' 

感謝のデフォルト値を表に列を追加するには、この適切なPostgreSQLの構文です!

+2

ビット列または実際の 'boolean'列を使用しますか? – rfusca

答えて

158
ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN DEFAULT FALSE; 

をクレイグが、に分割する方が効率的です埋めテーブルの上に述べたように、あなたも直接

ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN NOT NULL DEFAULT FALSE; 

をNOT NULLを指定することができますステップ:

ALTER TABLE users ADD COLUMN priv_user BOOLEAN; 
UPDATE users SET priv_user = 'f'; 
ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; 
ALTER TABLE users ALTER COLUMN priv_user SET DEFAULT FALSE; 
+17

テーブルが大きければ、時間がかかることがあり、テーブル全体をロックすることに注意してください。 'ALTER TABLE users ADD COLUMN priv_user BOOLEAN;'、 'UPDATE users SET priv_user = 'f';'そして最後に 'ALTER TABLE users ALTER COLUMNが必要な場合は、 priv_user SET NOT NULL; '。 –

+0

ステップに分割されたアプローチでは、デフォルト値が追加されません。 "DEFAULT 'f'"を別の手順で追加するのはまだ高速ですか? –

+0

はい、別の手順でデフォルトを追加するのは、メタデータ操作だけであり、したがって非常に高速です。 – Eelke

13

あなたは、実際のブール列場合:

ALTER TABLE users ADD "priv_user" boolean DEFAULT false; 
+0

注:Postgresのすべてのバージョンがこれをサポートしているわけではありません。 –

5

I PostgreSQLを使用している場合は、ブール型の小文字の列型BOOLEANを使用する必要があります。

ALTER TABLEユーザーADD "priv_user" boolean DEFAULT false;ただ、今後の参考のため

8

、ないあなたすでにはブール列を持っているし、あなただけのデフォルトを追加する場合:psqlで

ALTER TABLE users 
    ALTER COLUMN priv_user SET DEFAULT false; 
1

この

Alter table users add column priv_user boolean default false ; 

のような列クエリ構文を変更ブール値(真偽)(tf)のようにDBに保存します。

関連する問題