mysql设置自动增加字段的初始值
2012-11-06 23:59
183 查看
alter table table_name auto_increment=n; 注意n只能大于已有的auto_increment的整数值,小于的值无效. show table status like 'table_name' 可以看到auto_increment这一列是表现有的值. 步进值没法改变.只能通过下面提到last_inset_id()函数变通使用 在使用AUTO_INCREMENT时,应注意以下几点: AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。 设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。 AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。 AUTO_INCREMENT数据列必须具备NOT NULL属性。 AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。 在不用AUTO_INCREMENT的情况下生成序列,可利用带参数的LAST_INSERT_ID()函数。如果用一个带参数的LAST_INSERT_ID(expr)去插入或修改一个数据列,紧接着又调用不带参数的LAST_INSERT_ID()函数,则第二次函数调用返回的就是expr的值。下面演示该方法的具体操作: 先创建一个只有一个数据行的数据表: create table seq_table (id int unsigned not null); insert into seq_table values (0); 接着用以下操作检索出序列号: update seq_table set seq = LAST_INSERT_ID( seq + 1 ); select LAST_INSERT_ID(); 通过修改seq+1中的常数值,可生成不同步长的序列,如seq+10可生成步长为10的序列。 该方法可用于计数器,在数据表中插入多行以记录不同的计数值。再配合LAST_INSERT_ID()函数的返回值生成不同内容的计数值。这种方法的优点是不用事务或LOCK,UNLOCK表就可生成唯一的序列编号。不会影响其它客户程序的正常表操作 |
相关文章推荐
- MySQL设置表的字段值自动增加
- Mysql 如何设置字段自动获取当前时间
- Mysql 如何设置字段自动获取当前时间
- SQLite中Integer字段才支持自动增加,设置为主键可自增
- Mysql 如何设置字段自动获取当前时间
- Mysql创建一个表,字段设置为自动增长(自增字段)
- Mysql 如何设置字段自动获取当前时间
- Mysql 设置字段自动获取当前时间(随修改数据而更改和修改数据不更改的两种方式)
- MySql 表的约束、字段值自动增加
- SQLite中Integer字段才支持自动增加,设置为主键可自增
- mysql自动增长字段的设置
- Mysql 如何设置字段自动获取当前时间
- mysql设置字段自动获取当前时间
- 给MySQL中某表增加一个新字段,设为主键值为自动增长。
- Mysql 如何设置字段自动获取当前时间
- MySQL 创建表时,设置时间字段自动插入当前时间
- 设置字段值自动增加
- Mysql 如何设置字段自动获取当前时间
- Mysql 如何设置字段自动获取当前时间
- Mysql 如何设置字段自动获取当前时间