插入或更新的任务数据库中基于两个条件的行可能具有挑战性,特别是在寻求有效的解决方案时。在处理不断生成具有重复名称和日期的新行的表时,此问题尤其普遍。
这个问题的最佳解决方案是 INSERT INTO ON DUPLICATE KEY UPDATE 陈述。该语句允许插入新行(如果尚不存在),并更新现有行(如果存在)。要使用此语句,表必须具有唯一键(例如复合键)来检测插入操作期间的冲突。
考虑一个具有以下模式的表:
CREATE TABLE myThing ( id INT AUTO_INCREMENT PRIMARY KEY, name INT NOT NULL, values1 INT NOT NULL, values2 INT NOT NULL, dates DATE NOT NULL, UNIQUE KEY (name, dates) -- This unique key is crucial. );
通过此设置,如果名称和日期组合不存在,以下语句将插入新行,如果存在,则更新现有行:
INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
使用相同的名称和日期组合多次执行插入语句将更新values2列,如图所示如下:
| id | name | values1 | values2 | dates | | --- | --- | --- | --- | --- | | 1 | 777 | 1 | 4 | 2015-07-11 |
INSERT INTO ON DUPLICATE KEY UPDATE 语句提供了一种高效的解决方案来管理插入和根据多种条件进行更新。通过定义唯一键,此方法可确保重复条目得到适当处理,从而无需复杂的存储过程。
以上是如何根据两个条件高效地插入或更新数据库行?的详细内容。更多信息请关注PHP中文网其他相关文章!