在php myadmin中,它表示将自动增量列定义为表的主键是没有用的。您可以删除主键约束。 (因为两者都做同样的工作)。
这是真的吗?我应该删除主键约束?
为where子句而不是自动增量列
创建主键列是不合适的答案 0 :(得分:1)
你可以创建一个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列成为PK,你最好定义它。
请注意,表(目前)只能有一个auto_incrementing列。
如果您没有定义PK,会发生什么?
如果你不这样做,MySQL会为你定义一个隐藏的auto_incrementing PK
但是,如果您已经有一个auto_increment列,那么该列将始终具有索引,并且因为只有一个auto_incrementing列,MySQL(目前!)除了将该行提升为主键之外别无选择。
答案 1 :(得分:1)
保持PK约束。这样可以避免一些麻烦:
答案 2 :(得分:1)
当你将列定义为auto_increment时,它必须是key(primary,unique,index)。
举个例子
的MySQL>创建表测试
-> (id int(5) auto_increment,
-> name char(10)
-> );
错误1075(42000):表定义不正确;只能有一个自动列,必须将其定义为键
所以当我们将列定义为auto_increment时,它应该是key.So最好将列定义为PK。
数据库管理器使用主索引有效访问表行,并允许数据库管理器强制实施主键的唯一性。