2、修改为任意值:
上述语句中,table_name为表名,15为要修改的值,这样下次插入的数据的自增列的值就是15。
若修改的值与现有数据冲突,会自动修改为当前最大值+1。
如图所示,修改自增列id为11,虽然显示修改成功,但是id=11已经是现有值,再插入时会自动把自增列的值变为当前最大值(14)加1,也就是15
设置自增列
MYSQL的自增列一定要是有索引的列,设置种子值要在表的后面设置
--mysql
-- 设置自增ID从N开始
CREATE TABLE empautoinc(
ID INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT = 100 --(设置自增ID从100开始)
insert into empautoinc(id) values(null)
Query OK, 1 row affected (0.00 sec)
mysql>select * from empautoinc
+-----+
| ID |
+-----+
| 100 |
+-----+
1 row in set (0.00 sec)
show table status like 'empautoinc'G
*************************** 1. row ***************************
Name: empautoinc
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 1
Avg_row_length: 16384
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 101
Create_time: 2016-10-27 01:50:32
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
设置自增列的步长,可以分为全局级别和会话级别
如果是会话级别,那么当用户新建一个会话的时候,那么步长又回到了全局级别,所以mysql的步长跟sqlserver的步长有很大的不同
mysql不能设置为 表级别 的步长
私信666领取资料
#1、查看现在mysql自增id的配置
show variables like '%increment%'
#2、下面步长为2的增长
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| auto_increment_increment | 2 |
| auto_increment_offset | 1 |
| div_precision_increment | 4 |
| innodb_autoextend_increment | 8 |
| ndb_autoincrement_prefetch_sz | 32 |
+-------------------------------+-------+
5 rows in set (0.01 sec)
#3、解决
set auto_increment_increment = 1和set @@auto_increment_increment = 1
如果想永久性的改回为1,在my.cnf or my.ini中查找这个field,然后修改,然后restart mysql.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)