Mysql設定自增長主鍵的初始值

2021-07-04 22:08:31 字數 2918 閱讀 1364

alter table table_name auto_increment=n;

注意n只能大於已有的auto_increment的整數值,小於的值無效.

show table status like 'table_name' 可以看到auto_increment這一列是表現有的值.

步進值沒法改變.只能通過下面提到last_inset_id()函式變通使用

mysql可以使用auto_increment來設定主鍵的值為自增長的,其預設值是1,如果想把它的初始值設定為1000,比較笨的辦法是先插入一條記錄並指定主鍵的值為999,然後delete改行記錄,例如:

**如下

複製**

insert into test(pk) values(999);

delete from test where pk = 999;

更好的方法是使用alter的方法來直接修改,例如:

**如下

複製**

alter table test auto_increment = 1000;

例子

1、不控制主鍵的起點

**如下

複製**

create table emb_t_dictbustype

(emb_c_bustypeid      int not null auto_increment,

emb_c_bustypeenname  varchar(255) not null,

emb_c_bustypezhname  varchar(255) not null,

primary key(emb_c_bustypeid) 

)engine=innodb  default charset=gbk;

2、控制主鍵的起點

**如下

複製**

create table emb_t_dictbustype

(emb_c_bustypeid      int not null auto_increment,

emb_c_bustypeenname  varchar(255) not null,

emb_c_bustypezhname  varchar(255) not null,

primary key(emb_c_bustypeid) 

)engine=innodb auto_increment=1001 default charset=gbk;

自增主鍵歸零

方法一:

如果曾經的資料都不需要的話,可以直接清空所有資料,並將自增欄位恢復從1開始計數

truncate table 表名

方法二:

dbcc checkident (』table_name』, reseed, new_reseed_value) 當前值設定為 new_reseed_value。如果自建立表後沒有將行插入該錶,則在執行 dbcc checkident 後插入的第一行將使用 new_reseed_value 作為標識。否則,下乙個插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小於標識列中的最大值,以後引用該錶時將產生 2627 號錯誤資訊。 www.111cn.net

方法二不會清空已有資料,操作比較靈活,不僅可以將自增值歸零,也適用於刪除大量連續行後,重新設定自增值並插入新的資料;或從新的值開始,當然不能和已有的衝突。

**如下

複製**

$sql="delete from $table_vote";

mysql_query($sql, $link);

$sql="alter table $table_vote auto_increment=1";

mysql_query($sql, $link);

獲取自增主鍵【4種方法】

通過jdbc2.0提供的insertrow()方式

通過jdbc3.0提供的getgeneratedkeys()方式

通過sql select last_insert_id()函式

通過sql @@identity 變數

1. 通過jdbc2.0提供的insertrow()方式

自jdbc2.0以來,可以通過下面的方式執行。

**如下

複製**

statement stmt = null;

resultset rs = null;

try   finally

2. 通過jdbc3.0提供的getgeneratedkeys()方式

**如下

複製**

statement stmt = null;

resultset rs = null;

try   else

rs.close();

rs = null;

system.out.println("key returned from getgeneratedkeys():"

+ autoinckeyfromapi);

}  finally

使用auto_increment時,應注意以下幾點:

auto_increment是資料列的一種屬性,只適用於整數型別資料列。

設定auto_increment屬性的資料列應該是乙個正數序列,所以應該把該資料列宣告為unsigned,這樣序列的編號個可增加一倍。

auto_increment資料列必須有唯一索引,以避免序號重複。

auto_increment資料列必須具備not null屬性。

auto_increment資料列序號的最大值受該列的資料型別約束,如tinyint資料列的最大編號是127,如加上unsigned,則最大為255。一旦達到上限,auto_increment就會失效。

mysql設定主鍵自增長和自增長初始值

本文主要向大家介紹mysql資料庫之mysql建立表實現主鍵自增並且初始值為200,希望對大家學習mysql資料庫有所幫助。假設已經建立表test,並且主鍵為id。mysql可以使用auto increment來設定主鍵的值為自增長的,其預設值是1。alter table test change i...

mysql 主鍵自增長

mysql 資料庫表主鍵自增長的sql語句 1 不控制主鍵的起點 create table emb t dictbustype emb c bustypeid int not null auto increment,emb c bustypeenname varchar 255 not null,e...

mysql復合主鍵如何設定自增長屬性

這個可以有,需注意把自增長列放在復合主鍵的第乙個位置,也就是最左邊。比如 create table t a int auto increment,b int,key a,b 這個問題分兩種情況討論。1 myisam引擎.復合索引可以包含乙個auto increment,而且這個auto increm...