比如說(shuō)你創(chuàng)建了一個(gè)表userinfos
創(chuàng)新互聯(lián)于2013年創(chuàng)立,公司自成立以來(lái)始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)(小程序定制開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、重慶APP開(kāi)發(fā)公司等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機(jī)服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營(yíng)銷(xiāo)等)應(yīng)用服務(wù);以先進(jìn)完善的建站體系及不斷開(kāi)拓創(chuàng)新的精神理念,幫助企業(yè)客戶(hù)實(shí)現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致贊譽(yù)。
create table userinfos(
userid int primary key,
username varchar(20)
);
//給userinfos添加序列
update userinfos set userid = last_insert_id(userid+1);
//然后查詢(xún)序列
select last_insert_id();
或者也可以這樣
create table userinfos(
userid int primary key not null auto_increment,
username varchar(20)
);
一、修改自增長(zhǎng)序列的值
alter table table_name auto_increment=n;
注意:n只能大于已有的auto_increment的整數(shù)值,小于的值無(wú)效.
show table status like 'table_name' 的返回結(jié)果里的auto_increment列就是表的現(xiàn)有值.
二、控制主鍵的起點(diǎn)
create table 表名
(
......
) engine=INNODB auto_increment=1001 default charset=gbk;
三、自增主鍵歸零
如果曾經(jīng)的數(shù)據(jù)都不需要的話(huà),可以直接清空所有數(shù)據(jù),并將自增字段恢復(fù)從1開(kāi)始計(jì)數(shù)
truncate table 表名
四、獲取自增主鍵
通過(guò)SQL select LAST_INSERT_ID()函數(shù)
通過(guò)SQL @@IDENTITY 變量
五、說(shuō)明
AUTO_INCREMENT數(shù)據(jù)列必須有唯一索引,以避免序號(hào)重復(fù)。
AUTO_INCREMENT數(shù)據(jù)列必須具備N(xiāo)OT NULL屬性。
設(shè)置AUTO_INCREMENT屬性的數(shù)據(jù)列應(yīng)該是一個(gè)正數(shù)序列,所以應(yīng)該把該數(shù)據(jù)列聲明為UNSIGNED,這樣序列的編號(hào)個(gè)可增加一倍。
序列只有db2
oracle有,mysql沒(méi)有序列的,不過(guò)你可以給你所所創(chuàng)建的表的主鍵設(shè)置為自增。
例如
create
table
A
(
id
int(20)
auto_increment
)
不過(guò)設(shè)置為自增的鍵必須是數(shù)值類(lèi)型的。
mysql下序列是用關(guān)鍵字auto_crement,起始值及步長(zhǎng)增長(zhǎng)值由系統(tǒng)以下參數(shù)確定:
mysql show variables like '%auto_increment%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql
其中auto_increment_offset表示起始值(且必須由1開(kāi)始),參數(shù)表示auto_increment_increment表示步長(zhǎng)增長(zhǎng)值(只能是正整數(shù))。
建表示例:
create table t111
(id int auto_increment primary key,
remark varchar(50)
);
由上面所說(shuō)可知,你的需求在mysql下單用auto_crement是實(shí)現(xiàn)不了的。建議你考慮別的辦法吧,或由一些變通的方式實(shí)現(xiàn)。
使用函數(shù)創(chuàng)建自增序列管理表(批量使用自增表,設(shè)置初始值,自增幅度)