对于表currencies,我有以下模式
CREATE TABLE IF NOT EXISTS public.currencies
(
currency_id integer NOT NULL DEFAULT nextval('currencies_currency_id_seq'::regclass),
name text COLLATE pg_catalog."default" NOT NULL,
abbreviation character varying(10) COLLATE pg_catalog."default" NOT NULL,
base_value integer NOT NULL,
prepend_symbol_flg boolean NOT NULL DEFAULT false,
CONSTRAINT currencies_pkey PRIMARY KEY (currency_id)
)注意,prepend_symbol_flg是NOT NULL,具有默认值。
我用以下INSERT语句用node.js编写了REST:
pool.query(
`INSERT INTO currencies (
name, abbreviation, base_value, prepend_symbol_flg
) VALUES ($1, $2, $3, $4) RETURNING *`,
[name, abbreviation, base_value, prepend_symbol_flg]
)当我用以下主体向端点发送帖子时:
{
"name": "copper piece",
"abbreviation": "cp",
"base_value": 1
}邮递员给出了以下错误:null value in column "prepend_symbol_flg" of relation "currencies" violates not-null constraint。
我理解这是因为主体不包括prepend_symbol_flg键值对,但这不是默认值吗?因此,如果没有提供一个值,则使用默认值来代替?
当用户没有为这个字段提供值时,我需要做什么才能获得默认的使用呢?
发布于 2022-04-10 18:36:29
如果没有在INSERT语句中指定列,则使用默认值。在传递NULL值时不使用它--您的查询是这样做的。您需要在JS (prepend_symbol_flg ?? false)中执行默认操作,或者根据JSON主体中的字段动态创建查询字符串。
https://stackoverflow.com/questions/71813192
复制相似问题