INSERT INTO postgres不工作

时间:2015-08-19 23:30:42

标签: sql postgresql

我讨厌询问像这样的小愚蠢的错误,但我无法弄清楚我的生活......

此查询:

INSERT INTO user_authentication(init_password_setup) VALUES( substr((md5(random()::TEXT)), 0, 10) ) WHERE (init_password_setup = NULL OR init_password_setup ='')

抛出此错误:

 16:27:11 Kernel error: ERROR:  syntax error at or near "WHERE"

我尝试将其作为插入选择运行。真诚的感谢任何帮助,非常感谢

4 个答案:

答案 0 :(得分:3)

如果要修改现有行,则需要UPDATE语句而不是INSERT语句。

更新将修改现有行,Insert将在表中添加新行。

UPDATE user_authentication
  SET init_password_setup = substr((md5(random()::TEXT)), 0, 10)
WHERE init_password_setup IS NULL 
   OR init_password_setup =''

答案 1 :(得分:3)

INSERT语句没有WHERE子句。但是你可以使用INSERT ... SELECT语句:

INSERT INTO user_authentication (user_id, init_password_setup) 
    SELECT id, substr((md5(random()::TEXT)), 0, 10)
    FROM users 
    WHERE <some condition here>;

或只更新现有记录:

UPDATE user_authentication
SET init_password_setup = substr((md5(random()::TEXT)), 0, 10)
WHERE init_password_setup IS NULL OR init_password_setup ='';

答案 2 :(得分:1)

insert语句没有where子句。插入新数据或使用update子句(可以有where子句更新现有数据)。

答案 3 :(得分:1)

您不能使用WHERE子句进行INSERT。 如果您尝试INSERT,那么只需使用VALUES。 如果你想在哪里使用UPDATE。