0

为什么 MySQL 没有这个功能?

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

我需要一个存储过程来执行此操作吗?

4

1 回答 1

4

插入到底在哪里?同一张桌子?您已经知道这是不可能的,因为主键已经存在。

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

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

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

于 2012-06-17T05:41:15.050 回答