MySQL Auto_Increment屬性應用

來源:互聯網
上載者:User

標籤:style   c   class   blog   code   java   

    我們經常要用到唯一編號,以標識記錄。在MySQL中可通過資料列的AUTO_INCREMENT屬性來自動產生。MySQL支援多種資料表,每種資料表的自增屬性都有差異,這裡將介紹各種資料表裡的資料列自增屬性。1 用法:
CREATE TABLE test(id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(15) NOT NULL)AUTO_INCREMENT = 100; 

 

可在建表時可用 “AUTO_INCREMENT=n”選項來指定一個自增的初始值。
可用 alter table table_name AUTO_INCREMENT=n命令來重設自增的起始值。

說明:
(1)如果把一個NULL插入到一個AUTO_INCREMENT資料列裡去,MySQL將自動產生下一個序列編號。編號從1開始,並1為基數遞增。
(2)把0插入AUTO_INCREMENT資料列的效果與插入NULL值一樣。但不建議這樣做,還是以插入NULL值為好。
(3)當插入記錄時,沒有為AUTO_INCREMENT明確指定值,則等同插入NULL值。
(4)當插入記錄時,如果為AUTO_INCREMENT資料列明確指定了一個數值,則會出現兩種情況,情況一,如果插入的值與已有的編號重複,則會出現出錯資訊,因為AUTO_INCREMENT資料列的值必須是唯一的;情況二,如果插入的值大於已編號的值,則會把該插入到資料列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。
(5)如果用UPDATE命令更新自增列,如果列值與已有的值重複,則會出錯。如果大於已有值,則下一個編號從該值開始遞增。  Oracle資料庫不支援直接設定主鍵自增,可以通過設定觸發器實現

例如,將t_user的欄位ID設定為自增:(用序列sequence的方法來實現)

 

----建立表Create table t_user(Id number(6),userid varchar2(20),loginpassword varchar2(20),isdisable number(6));----建立序列create sequence user_seqincrement by 1 start with 1nomaxvaluenominvaluenocache----建立觸發器create or replace trigger tr_userbefore insert on t_userfor each rowbeginselect user_seq.nextval into :new.id from dual;end;----測試insert into t_user(userid,loginpassword, isdisable)values(‘ffll‘,‘liudddyujj‘, 0);insert into t_user(userid,loginpassword, isdisable)values(‘dddd‘,‘zhang‘, 0)select * from t_user;

 

參考:http://blog.csdn.net/tancaiyi/article/details/4040289
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.