在MySQL中,我們可以使用自增字段作為表的主鍵。然而,有時(shí)我們需要讓一些非主鍵字段也能夠自增。
為實(shí)現(xiàn)這個(gè)目的,我們需要使用MySQL中的AUTO_INCREMENT屬性和DEFAULT關(guān)鍵字。
首先,在表中需要?jiǎng)?chuàng)建一個(gè)自增字段,可以命名為id,也可以起其他的名字。為了使其自增,我們需要在CREATE TABLE語(yǔ)句中將該字段的類(lèi)型設(shè)置為BIGINT UNSIGNED(或其他數(shù)字類(lèi)型),并將其AUTO_INCREMENT屬性設(shè)置為1,如下所示:
CREATE TABLE mytable ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, age INT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (name) );
這里我們將name字段作為主鍵,而id字段不是主鍵。當(dāng)我們往mysql中的表插入新行時(shí),如果id字段不存在或者其值為0,MySQL會(huì)自動(dòng)為其生成一個(gè)唯一的、遞增的值。
但是,我們不能夠直接將AUTO_INCREMENT屬性應(yīng)用到非主鍵字段上。但是,我們可以使用以下的方式來(lái)實(shí)現(xiàn):
INSERT INTO mytable (name, age, id) VALUES ('Tom', 23, default);
這里使用DEFAULT關(guān)鍵字將id字段的值設(shè)置為默認(rèn)值。如果該字段在INSERT語(yǔ)句中沒(méi)有明確指定,默認(rèn)值就是NULL。但是,我們可以通過(guò)使用DEFAULT關(guān)鍵字,將其指定為自增的下一個(gè)值。
總的來(lái)說(shuō),雖然MySQL中的AUTO_INCREMENT屬性只能應(yīng)用到主鍵字段上,但是通過(guò)使用DEFAULT關(guān)鍵字,我們依然可以實(shí)現(xiàn)非主鍵字段的自增。這個(gè)方法對(duì)于一些特殊的需求是非常有用的。