2016-11-05 8 views
2

テーブルに既に存在するカラムINTEGERのデフォルト値を設定します。PostgreSQLは、ALTER COLUMN SET DEFAULTを使用してデフォルト値を設定できません

postgreSQL docによると、私は、次のステートメントを使用する必要があります。

ALTER [ COLUMN ] column_name SET DEFAULT expression 

。したがって私のSQL文は次のようになります。私は何も起こらなかったコマンドを発行した後

ALTER TABLE users ALTER COLUMN board_consecutive_share_days SET DEFAULT 0; 

、デフォルト値はでした列に設定します。

ownpleasuretestdb=# select board_consecutive_share_days from users; 

board_consecutive_share_days 
------------------------------ 



(3 rows) 

私のSQL文で何が間違っていますか?

答えて

1

カラムのデフォルトを設定しました。つまり、そのテーブルに新しい行がある場合は、その列を省略するとデフォルト値が使用されます。INSERTあなたがそうのようなテーブルを作成する場合たとえば

、:

CREATE TABLE foo (a int, b int default 0); 

次に、あなたが発行できます。

# INSERT INTO foo VALUES (1, 2); 
# INSERT INTO foo (a) VALUES (2); 
# SELECT * FROM foo; 
---+--- 
1 | 2 
2 | 0 
(2 rows) 

がいる場合、他の一方で、あなたは0に、すべての既存の値を設定したいですあなたはUPDATEステートメントでそれを行うことができます。このような何かが働くだろう:

UPDATE users SET board_consecutive_share_days = 0; 

だけまだ価値がない、その値を設定したい場合は(それはnullだところが、ある)、それはあまりにも、簡単です:

UPDATE users SET board_consecutive_share_days = 0 WHERE board_consecutive_share_days IS NULL; 
関連する問題