2012-04-05 64 views
0

我刚刚上传了我的node.js应用程序到heroku上,我的一个sql查询失败了。查询是:postgres on heroku sql语句失败

INSERT INTO countries (name, user_id, created_timestamp) 
SELECT $1, $2, CURRENT_TIMESTAMP 
WHERE NOT EXISTS (SELECT 1 FROM countries WHERE name = $1 FOR UPDATE) 

它与

失败

error: SELECT FOR UPDATE/SHARE is not allowed in subqueries

有谁知道为什么吗?如果我无法选择更新,是否有可以使用的解决方法?

+0

什么是你想实现什么? – 2012-04-05 17:13:45

+0

我试图插入到表中如果记录不存在,并且不存在主键违例,如果它存在 – dan 2012-04-05 22:09:23

回答

1

这可能会为你工作:

BEGIN; 

LOCK TABLE countries IN SHARE MODE; 

INSERT INTO countries (name, user_id, created_timestamp) 
SELECT $1, $2, CURRENT_TIMESTAMP 
WHERE NOT EXISTS (SELECT * FROM countries WHERE name = $1); 

COMMIT; 

Explanation and links in this closely related answer.