我的理解是,当我创建一个没有主键的表时,MySQL会创建一种它在内部使用的基础主键。
我正在使用一个没有主键的表,但如果我可以以某种方式访问此值,假设它确实存在并且可以检索,那么它对我的应用程序非常有用。
所以,我想知道我是否正确相信这样的价值存在于某个地方,以及是否有可能获得该价值。
编辑:为了清楚说明,我的应用程序对此表有一个递增的int属性非常有用。不幸的是,它并没有那样实现。所以,我有点抓住稻草来寻找解决方案。我要做的是选择表中的每第n行(n次更改)。所以,正如你可以看到是否有这个键,这将非常简单。
答案 0 :(得分:3)
如果表没有主键,则无法在其中指定特定行,因为无法唯一标识项。即使您使用的查询指定了每个列的特定值,但仍然不能确定只返回单行而没有主键,因此没有什么可以阻止重复的行。
但是,主键只是一个唯一索引。如果一个表在其一个或多个列上具有唯一索引,并且这些列不接受NULL,则这是除了name之外的所有表的主键。
如果你的表没有唯一的列,那么你就没有什么可以继续了。您必须使一列或列组合(对于复合键)唯一,或者添加一列作为表的主键。幸运的是,将列添加到MySQL表相对容易,只需将主键自动增量列添加到现有表中即可。