Postgres:有条件地添加到 table

Postgres: Conditionally adding to table

我无法弄清楚如何使用 Postgres 在 table 中专门插入一行,如果特定条件为真。

我找到了很多使用 CONFLICT 的答案,但我要检查的值不是唯一的,所以我不能做太多事情。我也试过 IF ELSE 但据我所知 Postgres 不支持这个?

这是我当前的查询:

IF EXISTS (SELECT id FROM "Vote" as v WHERE v."createdAt" >= '2020-09-01' AND v."createdAt" < '2020-10-01' AND v."authorId" = 6667 )                                                                         
    PRINT 'do nothing'
ELSE 
    INSERT INTO "Vote" ("authorId", "serverId") VALUES (1, 1);

它returns:

ERROR:  syntax error at or near "IF"

本质上,我是在检查用户是否在两个日期之间进行了投票,如果为真,则不应发生任何事情,如果为假,则应将投票插入 table.

是检查是否应该插入某些内容并可以在单个查询中插入它,还是我应该先检查该值是否存在然后 运行 插入查询?

使用普通 SQL:

INSERT INTO "Vote" ("authorId", "serverId")
SELECT 1, 1
WHERE NOT EXISTS (
    SELECT id
    FROM "Vote" as v
    WHERE
        v."createdAt" >= '2020-09-01' AND
        v."createdAt" < '2020-10-01' AND
        v."authorId" = 6667) 

平原里没有IFSQL,只有pl/sql