为什么 MySQL 没有这个功能?
INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
INSERT INTO ...
我需要一个存储过程来执行此操作吗?
为什么 MySQL 没有这个功能?
INSERT INTO abc (a) VALUES ('bla')
ON DUPLICATE KEY
INSERT INTO ...
我需要一个存储过程来执行此操作吗?
插入到底在哪里?同一张桌子?您已经知道这是不可能的,因为主键已经存在。
如果您正在谈论将行插入到不同的表中,那完全是另一回事,而不是使用单个插入语句来完成。这是因为该insert
语句的总体思想是将特定行放入特定表中。这通常可以使用“替代”类型的触发器来完成。
这个想法也意味着在原始行已经存在的情况下,您可能不应该尝试使用单个insert
语句来插入不同的行(例如更改主键)。在这种情况下,主键几乎可以肯定是人工的,在这种情况下,自动增量键可能是要走的路。
背后的想法insert ... on duplicate key update
是获取该行是否已经存在。它确实将特定行放入特定表中。