2012-06-17 48 views

回答

4

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

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

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

insert ... on duplicate key update背后的想法是获取该行是否已存在或不存在。它确实获得一个特定的行到一个特定的表。

+0

到不同的表中,我试图使用查询来处理逻辑:如果记录存在然后插入到多对多表中 –

+1

@amiawizard:_relationship_是一对一或不是,这不是取决于当前在源行和目标行之间有多少引用。我会建议以适当的多对多方式开始。 – paxdiablo