mySql是否有更新/插入组合,在更新失败时插入?
如果没有存储过程,我对这一点并不乐观,但我很好奇下面的内容是否可行 我想编写一个查询insert/update,如果一行找到匹配项,则更新该行;如果没有,则使用该行将要更新的值插入表中 所以。。。差不多mySql是否有更新/插入组合,在更新失败时插入?,mysql,Mysql,如果没有存储过程,我对这一点并不乐观,但我很好奇下面的内容是否可行 我想编写一个查询insert/update,如果一行找到匹配项,则更新该行;如果没有,则使用该行将要更新的值插入表中 所以。。。差不多 updateInsert into table_a set n = 'foo' where p='bar'; 如果p='bar'中没有行,它将自动向表_中插入一个集合n='foo' 编辑: 根据一些评论,我发现我需要澄清n不是主键,表实际上需要有重复行的自由。我只是有一种情况,一个特定的条目
updateInsert into table_a set n = 'foo' where p='bar';
如果p='bar'中没有行,它将自动向表_中插入一个集合n='foo'
编辑:
根据一些评论,我发现我需要澄清n不是主键,表实际上需要有重复行的自由。我只是有一种情况,一个特定的条目需要是唯一的。。。也许我只是以一种糟糕的方式混合隐喻,应该把它放到一个单独的表中,在这个表中,这个键是唯一的 我将使用表架构强制执行此操作-在目标表上使用唯一的多列键并使用INSERT IGNORE INTO-它将在重复键上抛出错误,但INSERT将在出错时忽略。引用线程-这有帮助吗?:对。。。我考虑过这一点,但我的问题是,我在示例n中检查的列不是主键。。。我感觉到他们需要。问题是表实际上需要能够接受重复的行,我只是想在某些情况下避免它,我发现自己必须执行这两个步骤if exists update if not insert过程。您不必使用主键。可以使用多列唯一键。例如,在mysql中,修改表mydb.test`addunique my_multicolumn_key uid,fid`I see。谢谢这并不完全是我想要的,因为正如我所说的,我需要能够在这个表中有完全重复的行,而不是它们的行id。但是对于可以将列组合成唯一集的情况来说,这是一种非常好的方法。