如果没有要更新的内容,请插入

时间:2011-12-17 20:59:09

标签: sql

我需要创建一个sql查询,它尝试按主键更新行,如果不存在则插入它。对于大多数数据库(MySQL,H2,Postgres,Oracle,DB2,MSSQL,Hsql,Derby),解决方案需要是通用的。

对于代码示例,请考虑一个由两列组成的简单表:id(Pr.Key)和txt

3 个答案:

答案 0 :(得分:3)

你想要SQL的MERGE语句,但它无处不在:

MERGE into thetable using (select theid from thetable)
when matched then update thetable thecolumn = thevalue where id = theid
when not matched then insert into thetable blablabla;

另一个解决方案是尝试插入,处理错误,检测是否违反约束,如果是,则更新。

答案 1 :(得分:0)

您必须使用存储过程才能执行此操作。 请参阅:http://jumpingbean.co.za/blog/mysql-if-exists-update-else-insert

答案 2 :(得分:0)

也许:

INSERT INTO table (id,txt) VALUES (1,"Hello")
  ON DUPLICATE KEY UPDATE txt="World";

但这只是MySQL