我們通常希望在每次插入新記錄時自動建立主鍵欄位的值。Auto-increment 會在新記錄插入表中時生成一個唯一的數字。
我們可以在表中建立一個自動增量(auto-increment)欄位。
用於 MySQL 的語法
以下SQL語句將 "Persons" 表中的“ID”列定義為自動遞增(auto-increment)主鍵欄位:
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
姓名 varchar(255) NOT NULL,
地址 varchar(255),
城市 varchar(255),
省份 varchar(255),
PRIMARY KEY (ID)
)
MySQL使用AUTO_INREMENT關鍵字來執行自動增量( auto-increment )任務。
預設情況下,AUTO_INREMENT的起始值為1,每個新記錄增加1。
若要以其他值開始AUTO_INREMENT序列,請使用以下SQL語法:
ALTER TABLE Persons AUTO_INCREMENT=100
要在 "Persons" 表中插入新記錄,我們不需要為"ID"欄指定值(自動新增唯一值):
INSERT INTO Persons (姓名,城市)
VALUES ('宋江','蓬萊市')
上面的SQL語句在 "Persons" 表中插入一個新記錄。“ID”欄將得到唯一值。"姓名"欄設定為"宋江","城市"欄設定為"蓬萊市"。
sqlite 建立表 AUTO_INCREMENT 失敗
SQLite中沒有AUTO_INCREMENT
這個關鍵字,它使用INTEGER PRIMARY KEY
來自動增長主鍵。如果你嘗試建立一個包含AUTO_INCREMENT
的表,SQLite將會丟擲錯誤。
錯誤解釋:
SQLite不支援在建立表時指定AUTO_INCREMENT
,它透過為表的主鍵指定INTEGER PRIMARY KEY
來自動為新插入的行分配唯一的整數ID。
解決方法:
在SQLite中建立自動增長主鍵的表時,你應該這樣定義主鍵:
CREATE TABLE example_table(
id INTEGER PRIMARY KEY,
column1 TYPE,
column2 TYPE,
...
);
其中id
是自動增長的主鍵,每當你插入新行時,SQLite會自動為id
分配下一個可用的整數值。請確保你的表中沒有使用AUTO_INCREMENT
關鍵字。
假設你有一個表如下:
CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER );
針對此表,執行如下:
INSERT INTO t1 VALUES(NULL,123);
邏輯上等同於:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
-----------------------------------
©著作權歸作者所有:來自51CTO部落格作者SQL資料庫開發的原創作品,請聯絡作者獲取轉載授權,否則將追究法律責任
SQL基礎知識普及(二十)——AUTO INCREMENT 欄位
https://blog.51cto.com/u_13002900/5133916
作者:Eight_Bit
連結:https://www.jianshu.com/p/671b55d702b1
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。