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

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

谢谢

推荐答案

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

也可以直接指定NOTNULL

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

UPDATE:以下仅适用于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;

Sql相关问答推荐

如何在数组2中获取数组1的计数值

JSON列之间的Postgr聚合

如何将资源密集型自连接转换为更快的查询?

解析键-值对,根据值 Select ,并使用SQL创建新列

不可能在SQL MERGE子句中引发异常

每年独特口味的冰淇淋数量

从列中提取子字符串的ORDER BY CASE语句

对表进行多项 Select 以返回最大值和时间

在SQL Server中设置关联对象的有效JSON格式

如何设计一个调用嵌套函数并仅在所有被调用的嵌套函数都提交时才提交的事务,例如,如果一个子函数失败则中止?

来自按PostgreSQL分组的最小日期

如何用QuestDB生成蜡烛图?

基于另一个(SAS、SQL)中的值更新列

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

如何用HeidiSQL在Firebird中设置超时?

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

获取上个月和上一年的值

Postgres更新增量之间的差异

多行状态下的分组查询判断状态

编写查询以根据级别 (p2) 返回父位置