0

我有不同的表需要共享一个主键池。

例如,表 A 的主键为 0 到 9,表 B 的主键为 10 到 19。

有没有办法告诉mysql从哪里绘制主键?像存储过程?执行一个知道桶分布的脚本就足够了。

一种天真的方法是在每个插入语句中设置主键。该PK是从该池中提取的。实际上,这需要在插入我想要避免的数据库的每个应用程序(如 php 或 java)中实现。

4

1 回答 1

1

我不明白为什么表需要共享主键。

你的描述已经暴露了一个问题。主键应该是无意义的(或者,最多可以指示插入顺序)。不应为不同的目的分配特定的范围。

相反,每个表都可以有自己的自动递增 id。一种可能性是拥有另一个具有自动递增 id 的表,并使用对该表的外键引用。缺点是您需要为每个表插入两个表insert——触发器可以很容易地做到这一点。

您应该有一个明确的类型,而不是主键的“范围”。

于 2015-09-15T11:40:04.637 回答