据我了解,当我创建一个没有主键的表时,MySQL会创建一种在内部使用的基础主键。
我正在使用一个没有主键的表,但是如果我能以某种方式访问此值(假设它确实存在并且可以检索),它将对我的应用程序非常有用。
因此,我想知道我是否正确,认为这样的值存在于某处,以及是否有可能获得该值。
编辑:只是为了清楚起见,这对于我的应用程序此表具有递增的int属性将非常有用。不幸的是,它没有以这种方式实现。因此,我有点不知所措以寻求解决方案。我想做的是选择表中的第n行(n次更改)。因此,您可以看到是否有此密钥,这将非常简单。
最佳答案
如果表没有主键,则无法在其中指定特定行,因为无法唯一地标识项。即使您使用为每个列指定特定值的查询,也仍然不能确定仅返回单行,因为没有主键,也没有什么可以防止重复的行。
但是,主键只是唯一索引。如果一个表在其一个或多个列上具有唯一索引,而这些列不接受NULL,则这是除名称以外的所有表的主键。
如果您的表没有唯一列,那么您就什么也没做。您必须使一列或列组合(对于复合键)唯一,或者添加一列作为表的主键。幸运的是,将列添加到MySQL表相对容易,只需将主键自动增量列添加到现有表即可。
关于mysql - 在MySQL(InnoDB)中获取基础主键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5681428/