我想在表格中为INTEGER
类型的已存在列设置默认值。
根据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语句有什么问题?
答案 0 :(得分: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;