发布网友 发布时间:2022-05-05 04:37
共1个回答
热心网友 时间:2022-05-05 06:07
用LAST_INSERT_ID()函数自增那个只能是1 在不用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表就可生成唯一的序列编号。不会影响其它客户程序的正常表操作。 查看原帖>>