更新行的最快方法是什么?如果参数不存在,请插入它。
我的表有两列ID quote_id, order_id
这些列的组合将形成一个独特的列。我不希望两行包含相同的内容 quote_id
以及 order_id
但两者都可以有多行。
id | quote_id | order_id
1 | q200 | o100
2 | q200 | o101
3 | q201 | o100
以前我会添加第三个字段,并将这两个字段与 -
所以我可以用 ON DUPLICATE KEY UPDATE
. 但这并不是很有效,因为有时我似乎忘记添加这些字段。
我的想法是尝试运行update查询,如果它失败了,就插入它,因为我运行了更多的update查询,然后插入。如何将其放入单个查询中,而不是让mysql服务器返回错误,然后重新运行insert查询。 if ( UPDATE table_name SET column1=value, column2=value2 WHERE some_column=some_value === ERROR ) THEN INSERT INTO table_name ....
我浏览了一些mysql文档,但找不到一个示例来说明如何在数据库中检测错误 IF
陈述
1条答案
按热度按时间xytpbqjk1#
应该对唯一标识行的列具有主约束或唯一约束。对此使用多列是正常的,sql支持语法:
然后,您可以依赖unique约束来导致插入失败,并运行更新:
在update部分中使用values()子句意味着“对我在insert部分中尝试使用的相应列使用相同的值。”