如何在SQL Insert语句中执行三元操作

如何在SQL Insert语句中执行三元操作,sql,postgresql,Sql,Postgresql,有没有一种方法可以通过使用三元操作来执行对Postgres数据库的插入 我试图不写SQL函数,也不通过代码传递当前的时间戳值。 试图直接在SQL语句本身中实现这一点。这可能吗 查看了select查询的示例,其中我可以使用CASE和WHEN,但对于INSERT什么都没有,在这里我看不到where子句适用 建议是否可以实现以下目标。谢谢 对于下面的check_time的值,我希望根据同一查询中的status值传入current_timestamp或null INSERT INTO user(name

有没有一种方法可以通过使用三元操作来执行对Postgres数据库的插入

我试图不写SQL函数,也不通过代码传递当前的时间戳值。 试图直接在SQL语句本身中实现这一点。这可能吗

查看了select查询的示例,其中我可以使用CASE和WHEN,但对于INSERT什么都没有,在这里我看不到where子句适用

建议是否可以实现以下目标。谢谢

对于下面的check_time的值,我希望根据同一查询中的status值传入current_timestamp或null

INSERT INTO user(name, age, status, check_time) VALUES (?, ?, ?, current_timestamp);
我希望将上述内容修改为以下内容

这不是一个有效的SQL语句,但正在尝试实现此三元语句的功能,即在状态为1时插入当前的\u时间戳,否则插入空值

INSERT INTO user(name, age, status, check_time) VALUES (?, ?, ?, status == 1 ? current_timestamp : null);

可以使用
大小写
表达式再次传递为列
状态传递的值

INSERT INTO "user"(name, age, status, check_time) 
VALUES (?, ?, ?, CASE WHEN ? = 1 THEN current_timestamp END);
另一种方法是使用
INSERT。。。选择不必两次通过
状态的

INSERT INTO "user"(name, age, status, check_time) 
SELECT t.name, t.age, t.status, CASE WHEN t.status = 1 THEN current_timestamp END
FROM (SELECT ? "name", ? age, ? status) t; 

我不明白第一个问题。它如何从第四个问号中得到值1或任何东西?什么时候1,但第四个问号不是状态。第四个问号必须再次是状态。这就是我所说的…再次传递列状态传递的值。明白了。我们将测试它。发现第一个选项更干净,但不想重复状态值。谢谢。您可能可以使用美元变量,而不是?,
($1,$2,$3,CASE WHEN$3=1…