本篇内容介绍了“MySQL表怎么创建自增字段”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

注:如果使用新的自增互斥方式,对于replication应该避免使用INSERT...ONDUPLICATEKEYUPDATE语句。

设置新自增互斥方式:通过配置选项:innodb_autoinc_lock_mode:调整锁策略:

innodb_autoinc_lock_mode=0(“traditional”lockmode:全部使用表锁)

innodb_autoinc_lock_mode=1(默认)(“consecutive”lockmode:可预判行数时使用新方式,不可时使用表锁)

innodb_autoinc_lock_mode=2(“interleaved”lockmode:全部使用新方式,不安全,不适合replication)

##创建自增字段

方法1、创建:

mysql>createtablec(idintauto_increment,namevarchar(20),primarykey(id));

QueryOK,0rowsaffected(0.52sec)

mysql>descc;

+-------+-------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+-------+-------------+------+-----+---------+----------------+

|id|int(11)|NO|PRI|NULL|auto_increment|

|name|varchar(20)|YES||NULL||

+-------+-------------+------+-----+---------+----------------+

2rowsinset(0.03sec)

方法2、修改:

mysql>createtablecc(idint,namevarchar(20));

QueryOK,0rowsaffected(0.42sec)

mysql>altertableccchangeididintprimarykeyauto_increment;

QueryOK,0rowsaffected(1.12sec)

Records:0Duplicates:0Warnings:0

mysql>desccc;

+-------+-------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+-------+-------------+------+-----+---------+----------------+

|id|int(11)|NO|PRI|NULL|auto_increment|

|name|varchar(20)|YES||NULL||

+-------+-------------+------+-----+---------+----------------+

2rowsinset(0.11sec)

mysql>insertintocc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');

mysql>select*fromcc;

+----+------+

|id|name|

+----+------+

|1|a|

|2|b|

|3|c|

|5|d|

+----+------+

4rowsinset(0.00sec)

注:只有int类型且为primarykey才可以使用auto_increment.

##对存在记录的表的列修改为自增列

mysql>createtableccc(idint,namevarchar(20));

QueryOK,0rowsaffected(0.27sec)

mysql>insertintoccc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');

QueryOK,4rowsaffected(0.53sec)

Records:4Duplicates:0Warnings:0

mysql>select*fromccc;

+------+------+

|id|name|

+------+------+

|1|a|

|NULL|b|

|NULL|c|

|5|d|

+------+------+

4rowsinset(0.00sec)

mysql>altertablecccchangeididintprimarykeyauto_increment;

QueryOK,4rowsaffected(1.04sec)

Records:4Duplicates:0Warnings:0

mysql>descccc;

+-------+-------------+------+-----+---------+----------------+

|Field|Type|Null|Key|Default|Extra|

+-------+-------------+------+-----+---------+----------------+

|id|int(11)|NO|PRI|NULL|auto_increment|

|name|varchar(20)|YES||NULL||

+-------+-------------+------+-----+---------+----------------+

2rowsinset(0.01sec)

mysql>insertintoccc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');

ERROR1062(23000):Duplicateentry'1'forkey'PRIMARY'

mysql>insertintoccc(id,name)values(6,'aa'),(NULL,'ab'),(NULL,'ac'),(10,'ad')

;

QueryOK,4rowsaffected(0.07sec)

Records:4Duplicates:0Warnings:0

mysql>select*fromccc;

+----+------+

|id|name|

+----+------+

|1|a|

|2|b|

|3|c|

|5|d|

|6|aa|

|7|ab|

|8|ac|

|10|ad|

+----+------+

8rowsinset(0.00sec)

mysql>

“MySQL表怎么创建自增字段”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!