尝试将上述问题从非母语英语翻译成英语:
这是一个关于在值可能已经存在于数据库中时将值插入数据库时使用的最快方法的问题.当值存在时,INSERT将失败,而当值不存在时,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