【发布时间】:2012-08-09 22:29:35
【问题描述】:
在默认值为false的表中添加列是正确的postgresql语法吗
ALTER TABLE users
ADD "priv_user" BIT
ALTER priv_user SET DEFAULT '0'
谢谢!
【问题讨论】:
-
你想要一个位列还是一个实际的
boolean列?
标签: sql postgresql
在默认值为false的表中添加列是正确的postgresql语法吗
ALTER TABLE users
ADD "priv_user" BIT
ALTER priv_user SET DEFAULT '0'
谢谢!
【问题讨论】:
boolean 列?
标签: sql postgresql
ALTER TABLE users
ADD COLUMN "priv_user" BOOLEAN DEFAULT FALSE;
也可以直接指定NOT NULL
ALTER TABLE users
ADD COLUMN "priv_user" BOOLEAN NOT NULL DEFAULT FALSE;
更新:以下仅适用于 postgresql 11 之前的版本。
正如 Craig 在填充表格中提到的那样,将其拆分为多个步骤会更有效:
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;
【讨论】:
ALTER TABLE users ADD COLUMN priv_user BOOLEAN; 添加没有默认值的列,然后添加UPDATE users SET priv_user = 'f';,最后如果需要ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL;。
在 psql 中改变列查询语法是这样的
Alter table users add column priv_user boolean default false ;
布尔值 (true-false) 像 (t-f) 值一样保存在数据库中。
【讨论】:
仅供参考,如果您已经有一个布尔列并且您只想添加一个默认值:
ALTER TABLE users
ALTER COLUMN priv_user SET DEFAULT false;
【讨论】:
如果您使用的是 postgresql,那么您必须使用小写的 BOOLEAN 列类型作为布尔值。
ALTER TABLE users ADD "priv_user" boolean DEFAULT false;
【讨论】:
如果你想要一个实际的布尔列:
ALTER TABLE users ADD "priv_user" boolean DEFAULT false;
【讨论】: