我想在DB中没有记录的情况下执行INSERT

fre*_*ara 1 mysql sql

尝试将上述问题从非母语英语翻译成英语:

这是一个关于在值可能已经存在于数据库中时将值插入数据库时​​使用的最快方法的问题.当值存在时,INSERT将失败,而当值不存在时,UPDATE将失败.哪些选择最合适?

  • 首先执行SELECT并选择INSERT或UPDATE.
  • 首先插入并在出现重复错误时使用UPDATE.

除了以上还有其他好的选择,请教我.

环境使用MySQL 4.1.

def*_*nes 11

如果你想在一个语句中执行此操作(听起来像你想要的那样),我建议使用INSERT ... ON DUPLICATE KEY UPDATE语法,如下所示:

INSERT INTO table (id, someothervalue) VALUES (1, 'hi mom')
  ON DUPLICATE KEY UPDATE someothervalue = 'hi mom';
Run Code Online (Sandbox Code Playgroud)

INSERT如果没有具有指定键值(主键或唯一键)的现有记录,则将执行初始语句.如果记录已存在,则执行以下UPDATE语句(someothervalue = 3).

所有版本的MySQL都支持此功能.有关详细信息,请参阅MySQL参考手册页面INSERT ... ON DUPLICATE KEY UPDATE