无法理解在 postgreSQL 中插入时的条件

Trouble with understanding a condition upon insert in postgreSQL

我有这个代码:

temp3=plpy.execute("""insert into tabl(warehouseid, timeo)  
values(%s,%s) returning tablid"""% 
(temp_warehouseid, 0 if not temp_timeo else temp_timeo  if producttypeid==1 else 0))

我不确定我是否理解如何将值插入到列 timeo

代码 0 if not temp_timeo else temp_timeo 是可以理解的,但是我们有另一个条件 if producttypeid==1 else 0 我不确定它是如何覆盖以前的值的?

我以前从未在 SQL 查询中见过这种编码。

具体在这个例子中:

temp_warehouseid = 1
temp_timeo = 2
producttypeid =5

这会插入值为 (1,0) 的行 我认为这是因为 producttypeid=5?但是我不明白它是如何工作的。

你问的是 python 结构。

tmp = VALUE1 if CONDITION else VALUE2

如果条件为真,则将 VALUE1 分配给 tmp。如果为假,则分配 VALUE2。

如果您的查询使用了两次此 python 构造。

timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3

如果 CONDITION1 为真,则选择值 1。如果为假,则计算第二个 "statement" VALUE2 if CONDITION2 else VALUE3

所以,如temp_timeo = 2,条件not temp_timeo为假。 而作为producttypeid = 5,条件producttypeid==1为假。 所以最后一个值0被选中。