0

我并不乐观,这可以在没有存储过程的情况下完成,但我很好奇以下是否可能。

我想编写一个查询插入/更新,如果它找到匹配项,则更新一行,如果没有,则将其更新的值插入到表中。

所以......像

updateInsert into  table_a set n = 'foo' where p='bar';

如果没有 p='bar' 的行,它将自动插入 table_a set n = 'foo';

编辑:基于几条评论,我看到我需要澄清 n 不是 PRIMARY KEY 并且表实际上需要有重复行的自由。我只是有一个特定条目需要唯一的情况......也许我只是在以一种不好的方式混合隐喻,应该把它拉到一个单独的表中,这个键是唯一的。

4

1 回答 1

0

我将使用表模式强制执行此操作 - 在目标表上使用唯一的多列键并使用INSERT IGNORE INTO- 它应该在重复键上引发错误,但插入将在错误时忽略。

于 2012-05-01T03:31:32.540 回答