使用默认值创建布尔列



背景

我正在尝试创建一个表,该表将具有布尔值的单列和单行。它将由某个外部应用程序设置为True或False。

代码

BEGIN;
CREATE TABLE my_table (
my_flag BOOL DEFAULT TRUE
);

END;

SELECT * FROM my_table

问题

当我执行SELECT * FROM my_table时,我希望它返回一个值为TRUE的行,除非它返回表和行,但没有值。我不知道为什么会这样?

很确定它没有返回一行:

CREATE TABLE my_table (
my_flag BOOL DEFAULT TRUE
);
select * from my_table ;
my_flag 
---------
(0 rows)

DEFAULT仅适用于INSERT一行:

insert into my_table values (default);
INSERT 0 1
test(5432)=> select * from my_table ;
my_flag 
---------
t
(1 row)

该表为空。必须至少添加一行。以下使用CTaS创建表的示例:

CREATE TABLE my_table (my_flag) AS SELECT TRUE;

db<gt;小提琴演示

最新更新