1. 程式人生 > >mysql AUTO_INCREMENT 設定主鍵自增

mysql AUTO_INCREMENT 設定主鍵自增

主鍵自增:

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 tbname auto_increment = x ;
設定表tbname的唯一auto_increment欄位起始值從x開始,如果此表資料量很多的話,這樣執行起來會很慢

AUTO_INCREMENT說明:

(1)如果把一個NULL插入到一個AUTO_INCREMENT資料列裡去,MySQL將自動生成下一個序列編號。編號從1開始,並1為基數遞增。

(2)把0插入AUTO_INCREMENT資料列的效果與插入NULL值一樣。但不建議這樣做,還是以插入NULL值為好。

(3)當插入記錄時,沒有為AUTO_INCREMENT明確指定值,則等同插入NULL值。

(4)當插入記錄時,如果為AUTO_INCREMENT資料列明確指定了一個數值,則會出現兩種情況,情況一,如果插入的值與已有的編號重複,則會出現出錯資訊,因為AUTO_INCREMENT資料列的值必須是唯一的;情況二,如果插入的值大於已編號的值,則會把該插入到資料列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。

(5)如果用UPDATE命令更新自增列,如果列值與已有的值重複,則會出錯。如果大於已有值,則下一個編號從該值開始遞增。

mysql> insert into testvalues(1,'a'),(2,'b'),(null,'c');

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0  Warnings: 0

mysql> select * From test;

+-----+----------+

| id | username |

+-----+----------+

|   1| a        |

|   2| b        |

| 100 | c       |

+-----+----------+

3 rows in set (0.00 sec)

修改某一列為自增:

mysql> alter table test change id  id int AUTO_INCREMENT;

mysql> create table t24(id int,namechar(10));

mysql> alter table t24 add primarykey(id); //新增主鍵

mysql> alter table t24 modify id intauto_increment;//加入自動增加

/**刪除主鍵唯一約束,還原到建表時的狀態*/

mysql> alter table t24 modify id int; //去掉auto_increment

mysql> alter table t24 drop primary key;

mysql> alter table t24 modify id int;//修改預設值為null

mysql中有自增長欄位,在做資料庫的主主同步時需要在引數檔案中設定自增長的兩個相關配置:auto_increment_offset和auto_increment_increment。

  • auto_increment_offset表示自增長欄位從那個數開始,他的取值範圍是1 .. 65535
  • auto_increment_increment表示自增長欄位每次遞增的量,其預設值是1,取值範圍是1 .. 65535

在主主同步配置時,需要將兩臺伺服器的auto_increment_increment增長量都配置為2,而要把auto_increment_offset分別配置為1和2.這樣才可以避免兩臺伺服器同時做更新時自增長欄位的值之間發生衝突。

來源:收集整理網上資料