【发布时间】:2019-12-24 02:24:32
【问题描述】:
我想根据查询结果创建一个变量,然后在 IF 语句中使用它。到目前为止我有这个:
with variable as (select "Id" from public.tableName where "OtherId" = 24)
if variable notnull then
insert into public.tableName ("OtherName", "OtherPhoneNumber", "OtherAddress", "Id")
overriding system values
values ('foo', '205-123-4567', '123 Sample Ln', variable)
end if
Postgres 给我一个错误,内容如下:
SQL 错误 [42601]:错误:“if”处或附近的语法错误
我做错了什么?
****edit: Id 不是主键,因为有一个不同的主键名为 TableNameId****
【问题讨论】:
-
我没有获得第一个 CTE。如果你期待
Id = 24,那么你不知道Id的值会从select返回吗? -
@TimBiegeleisen 我猜应该是
IF EXISTS(…) -
与您的问题无关,但是:您确实应该避免使用那些可怕的引用标识符。 wiki.postgresql.org/wiki/…
-
"Id"是主键还是唯一键?如果是,您可以简单地使用insert ... on conflict do nothing代替 -
如果
Id不是唯一的,那么整个 IF 没有意义,因为“变量”只能包含 单个 值,而不是多个值。无论如何应该将variable设置为哪个值?Name?如果是,那么您想将“名称”存储到整数列中似乎很奇怪。
标签: postgresql