gpt4 book ai didi

sql - 创建表时计算的 bool 列

转载 作者:行者123 更新时间:2023-11-29 14:08:08 25 4
gpt4 key购买 nike

我正在尝试用计算出的 bool 值创建表

CREATE TABLE parts
(
Id SERIAL PRIMARY KEY,
Weight INTEGER NOT NULL CHECK(Weight > 0),
Color VARCHAR(10),
Price INTEGER NOT NULL CHECK(Price > 0),
IsCheap BOOL AS (CASE WHEN Price <= 1000 THEN True ELSE False END),
Name VARCHAR(30)
);

但是出现这个错误

ERROR:  syntax error at or near "AS"
LINE 7: IsCheap BOOL AS (CASE WHEN Price <= 1000 THEN True ELSE Fal...

我也尝试过使用 BIT 而不是 BOOL - 同样的错误。不知道为什么它不起作用。

最佳答案

如果要使用计算列,则需要 Postgres 12(2019-10-03 发布)。

as仅靠自己是不够的。语法要求使用 generated always as ... as documented in the manual :

create table parts
(
id serial primary key,
weight integer not null check (weight > 0),
color varchar(10),
price integer not null check (price > 0),
is_cheap boolean generated always as (price <= 1000) stored,
name varchar(30)
);

如果您不使用 Postgres 12,那么我建议创建一个仅包含 price <= 1000 as is_cheap 的 View 因为该属性的计算非常便宜并且不需要存储它。

关于sql - 创建表时计算的 bool 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58373463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com