在MySQL數(shù)據(jù)庫(kù)中,自動(dòng)生成編號(hào)是一項(xiàng)非常常見的需求。本文將介紹兩種實(shí)現(xiàn)方法,一種是使用AUTO_INCREMENT,另一種是使用TRIGGER。
1. 使用AUTO_INCREMENT
AUTO_INCREMENT是MySQL數(shù)據(jù)庫(kù)中的一個(gè)特殊屬性,它可以自動(dòng)為表中的每一行生成一個(gè)唯一的編號(hào)。使用AUTO_INCREMENT非常簡(jiǎn)單,只需要在表的主鍵字段上添加AUTO_INCREMENT屬性即可。例如,下面的SQL語(yǔ)句會(huì)創(chuàng)建一個(gè)名為users的表,并在id字段上添加AUTO_INCREMENT屬性:
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,ame VARCHAR(50) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
在插入數(shù)據(jù)時(shí),只需要省略id字段的值,MySQL就會(huì)自動(dòng)為它生成一個(gè)唯一的編號(hào)。例如:
ame, age) VALUES ('張三', 18);ame, age) VALUES ('李四', 20);
這樣就會(huì)在users表中生成兩行數(shù)據(jù),它們的id字段分別為1和2。
2. 使用TRIGGER
TRIGGER是MySQL數(shù)據(jù)庫(kù)中的一種特殊對(duì)象,它可以在表中的數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)執(zhí)行一些操作。使用TRIGGER可以在插入數(shù)據(jù)時(shí)自動(dòng)為表中的每一行生成一個(gè)唯一的編號(hào)。例如,下面的SQL語(yǔ)句會(huì)創(chuàng)建一個(gè)名為users的表,并在插入數(shù)據(jù)時(shí)自動(dòng)為id字段生成一個(gè)唯一的編號(hào):
CREATE TABLE users (
id INT NOT NULL,ame VARCHAR(50) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
sert_trigger BEFORE INSERT ON users
FOR EACH ROW SET NEW.id = (SELECT IFNULL(MAX(id), 0) + 1 FROM users);
ame和age字段的值,MySQL就會(huì)自動(dòng)為id字段生成一個(gè)唯一的編號(hào)。例如:
ame, age) VALUES ('張三', 18);ame, age) VALUES ('李四', 20);
這樣就會(huì)在users表中生成兩行數(shù)據(jù),它們的id字段分別為1和2。
使用AUTO_INCREMENT和TRIGGER都可以實(shí)現(xiàn)MySQL表數(shù)據(jù)的自動(dòng)編號(hào)。AUTO_INCREMENT更加簡(jiǎn)單,只需要在表的主鍵字段上添加AUTO_INCREMENT屬性即可。而TRIGGER需要?jiǎng)?chuàng)建一個(gè)特殊的對(duì)象,并在插入數(shù)據(jù)時(shí)執(zhí)行一段SQL語(yǔ)句,比較麻煩。不過(guò),如果需要在插入數(shù)據(jù)時(shí)執(zhí)行一些其他的操作,TRIGGER會(huì)比較有用。