在php myadmin中,它表示在将自动增量列定义为表的主键时没有任何用处。您可以删除主键约束。(因为两者都做同样的工作,比如)。
这是真的吗。我应该删除主键约束吗?
where子句有一个主键列而不是自动增量列不是很好吗
发布于 2011-10-03 18:51:42
保持PK约束。它会帮你省去一些麻烦:
如果您打算使用一些框架来检查此约束以确定哪些列用作PK,请使用
发布于 2011-10-03 18:50:43
你可以创建一个auto_incrementing 的列,而不用它作为主键:
这句话是合法的:
mysql> create table silly_but_possible (
id int auto_increment not null,
xx varchar(9),
key(id),
primary key (xx));
Query OK, 0 rows affected (0.15 sec)所以如果你想让你的auto_incrementing列成为主键,你最好这样定义它。
请注意,一个表(目前)只能有一个auto_incrementing列。
如果不定义PK,会发生什么?
如果您不这样做,MySQL将为您定义一个隐藏的auto_incrementing PK。
但是,如果您已经有一个auto_increment列,那么该列将始终有一个索引,而且因为只能有一个auto_incrementing列MySQL (目前!)除了将该行提升为主键之外别无选择。
发布于 2011-10-03 19:37:06
将列定义为auto_increment时,它必须是键(主键、唯一键、索引键)。
举个例子
mysql>创建表测试
-> (id int(5) auto_increment,
-> name char(10)
-> );错误1075 (42000):表定义不正确;只能有一个auto列,并且必须将其定义为键
因此,当我们将列定义为auto_increment时,它应该是key.So,最好将该列定义为PK。
主索引由数据库管理器用于有效地访问表行,并允许数据库管理器强制主键的唯一性。
https://stackoverflow.com/questions/7633947
复制相似问题