Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySql是否有更新/插入组合,在更新失败时插入?_Mysql - Fatal编程技术网

mySql是否有更新/插入组合,在更新失败时插入?

mySql是否有更新/插入组合,在更新失败时插入?,mysql,Mysql,如果没有存储过程,我对这一点并不乐观,但我很好奇下面的内容是否可行 我想编写一个查询insert/update,如果一行找到匹配项,则更新该行;如果没有,则使用该行将要更新的值插入表中 所以。。。差不多 updateInsert into table_a set n = 'foo' where p='bar'; 如果p='bar'中没有行,它将自动向表_中插入一个集合n='foo' 编辑: 根据一些评论,我发现我需要澄清n不是主键,表实际上需要有重复行的自由。我只是有一种情况,一个特定的条目

如果没有存储过程,我对这一点并不乐观,但我很好奇下面的内容是否可行

我想编写一个查询insert/update,如果一行找到匹配项,则更新该行;如果没有,则使用该行将要更新的值插入表中

所以。。。差不多

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。但是对于可以将列组合成唯一集的情况来说,这是一种非常好的方法。