我有两张桌子' table1 '& ' table2 ',都有名为“ id ”的列(主键),两者都有自动增量。问题是如何使两个表的主键可行。
实施例: 我在' table1 '中输入id' 100 ',之后如果我尝试在' table2 '中输入新记录,我就会' “ table2 ”
中的 101 '我认为'外键'会完成这项工作,但它与我需要的完全相反
答案 0 :(得分:0)
严格地说,如果不诉诸额外的查询或额外的锁定,就无法做你所描述的事情。
您可以通过创建第三个表来模拟它,在其中插入以生成新的ID,然后使用LAST_INSERT_ID()插入table1或table2。请参阅How to have Unique IDs across two or more tables in MySQL?
中的示例另请参阅流行的MySQL性能博客中的此问题和解决方案的一些讨论:Sharing an auto_increment value across multiple MySQL tables
但我同意@Barmar的评论,这可能表明数据库的设计不好。如果您需要在多个表中使自动增量PK唯一,这可能意味着这两个表应该是一个表。