首頁技術(shù)文章正文

怎樣實現(xiàn)主鍵自增長約束?

更新時間:2021-12-17 來源:黑馬程序員 瀏覽量:

在 MySQL 中,當(dāng)主鍵定義為自增長后,這個主鍵的值就不再需要用戶輸入數(shù)據(jù)了,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動賦值。每增加一條記錄,主鍵會自動以相同的步長進行增長。

通過給字段添加 auto_increment 屬性來實現(xiàn)主鍵自增長。

語法

字段名 數(shù)據(jù)類型 auto_increment

操作

create table t_user1( 
  id int primary key auto_increment, 
  name varchar(20) 
);

特點

默認(rèn)情況下,auto_increment的初始值是 1,每新增一條記錄,字段值自動加 1。

一個表中只能有一個字段使用 auto_increment約束,且該字段必須有唯一索引,以避免序號重復(fù)(即為主鍵或主鍵的一部分)。

auto_increment約束的字段必須具備 NOT NULL 屬性。

auto_increment約束的字段只能是整數(shù)類型(TINYINT、SMALLINT、INT、BIGINT 等。

auto_increment約束字段的最大值受該字段的數(shù)據(jù)類型約束,如果達(dá)到上限,auto_increment就會失效。

指定自增字段初始值

如果第一條記錄設(shè)置了該字段的初始值,那么新增加的記錄就從這個初始值開始自增。例如,如果表中插入的第一條記錄的 id 值設(shè)置為 5,那么再插入記錄時,id 值就會從 5 開始往上增加。

-- 方式1,創(chuàng)建表時指定
create table t_user2 ( 
  id int primary key auto_increment, 
  name varchar(20)
)auto_increment=100;

-- 方式2,創(chuàng)建表之后指定
create table t_user3 ( 
  id int primary key auto_increment, 
  name varchar(20)
);

alter table t_user2 auto_increment=100;

delete和truncate在刪除后自增列的變化

  • delete數(shù)據(jù)之后自動增長從斷點開始

  • truncate數(shù)據(jù)之后自動增長從默認(rèn)起始值開始


分享到:
在線咨詢 我要報名
和我們在線交談!