我已经看到了处理这个问题的其他问题,并且我知道 PostgreSQL 没有内置的 upsert,必须使用 2 种方法来完成。这是我使用 pg gem 在 Ruby 中使用的代码。
@db.exec_params("UPDATE crawled SET url = $1, timestamp = $2 WHERE url = $1",[url,DateTime.now])
@db.exec_params("INSERT INTO crawled (url, timestamp) VALUES ($1, $2) WHERE NOT EXISTS
(SELECT 1 FROM crawled WHERE url = $1)",[url,DateTime.now])
但是,当我运行它时,我得到一个语法错误
exec_params': ERROR: syntax error at or near "WHERE" (PG::Error)
LINE 1: ...ERT INTO crawled (url, timestamp) VALUES ($1, $2) WHERE NOT ...
我的错误在哪里?