如果我忘记设置自动增量怎么办?我可以稍后在 MySQL 中设置吗?
mysqlmysqli database
是的,您可以稍后使用 ALTER table 设置自动增量。让我们先创建一个表。在这里,如您所见,我们还没有设置自动增量 −
mysql> create table forgetToSetAutoIncrementDemo -> ( -> StudentId int, -> StudentName varchar(30) -> ); Query OK, 0 rows affected (1.17 sec)
现在检查表描述,没有 auto_increment 列 −
mysql> desc forgetToSetAutoIncrementDemo;
这将产生以下输出 −
+-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | StudentId | int(11) | YES | | NULL | | | StudentName | varchar(30) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
以下是在 StudentId 列上设置自动增量的查询 −
mysql> alter table forgetToSetAutoIncrementDemo modified column StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY; Query OK, 0 rows impacted (2.12 sec) Records: 0 Duplicates: 0 Warnings: 0
现在再次检查表描述,auto_increment 列已成功添加 −
mysql> desc forgetToSetAutoIncrementDemo;
这将产生以下输出 −
+-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentName | varchar(30) | YES | | NULL | | +-------------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
下面是使用 insert 命令在表中插入一些记录的查询 −
mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Larry'); Query OK, 1 row affected (0.16 sec) mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Chris'); Query OK, 1 row affected (0.13 sec) mysql> insert into forgetToSetAutoIncrementDemo(StudentName) values('Robert'); Query OK, 1 row affected (0.17 sec)
以下是使用 select 语句显示表中的所有记录的查询 −
mysql> select * from forgetToSetAutoIncrementDemo;
这将产生以下输出,显示 StudentID 为 auto_increment −
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Larry | | 2 | Chris | | 3 | Robert | +-----------+-------------+ 3 rows in set (0.00 sec)