提问者:小点点

postgresql-将布尔列添加到表集默认值


这是正确的postgresql语法,可以将列添加到默认值为<code>false的表中吗

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

谢谢!


共3个答案

匿名用户

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 "priv_user" boolean DEFAULT false;

匿名用户

仅供将来参考,如果您已经有一个布尔列并且只想添加一个默认值,请执行以下操作:

ALTER TABLE users
  ALTER COLUMN priv_user SET DEFAULT false;