在重复键INSERT(而不是UPDATE)

时间:2012-06-17 05:36:49

标签: mysql

为什么MySQL不具备此功能?

INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
 INSERT INTO ...

我是否需要存储过程才能执行此操作?

1 个答案:

答案 0 :(得分:4)

准确插入到哪里?同桌呢?您已经知道这是不可能的,因为主键已经存在。

如果您正在讨论将行插入不同的表中,那么这完全是另一回事,而不是使用单个insert语句。这是因为insert语句的一般概念是将特定行放入特定表中。通常可以使用“替代”类型的触发器来完成。

这个想法也意味着您可能不应该尝试使用单个insert语句在原始行中插入不同的行(例如更改主键)已经存在。在这种情况下,主键几乎肯定是人为的,在这种情况下,自动增量键可能是最佳选择。

insert ... on duplicate key update背后的想法是获取该行是否已经存在。它 将特定行放入特定表中。