条件价值

Eri*_*ner 1 sql postgresql

我有一个使用UUID作为主键的表.像这样插入新行

INSERT INTO a ( id, ... ) VALUES ( uuid_generate_v4(), ...)
Run Code Online (Sandbox Code Playgroud)

现在我实际上只想在插入中没有提供ID时生成UUID(NULL或者是空字符串)

是否有可能写出这样的东西?

INSERT INTO a ( id, ... ) VALUES ( $1 || uuid_generate_v4(), ...)
Run Code Online (Sandbox Code Playgroud)

Mik*_*ll' 5

COALESCE()函数将使用第一个非空.如果$ 1为null,则coalesce()将使用uuid_generate_v4().否则,它将尝试使用$ 1.

insert into a (id, ... ) values 
(coalesce($1, uuid_generate_v4()), ... );
Run Code Online (Sandbox Code Playgroud)