MySQL中,除了“id”、“uid”、“gid”等常用的主鍵字段外,還有一些其他的字段能夠自增。例如“order_id”、“article_id”、“task_id”等等,只要在字段定義時加上“auto_increment”關(guān)鍵字,就可以自增了。
CREATE TABLE `order` ( `order_id` int(11) NOT NULL AUTO_INCREMENT, --自增字段 `user_id` int(11) NOT NULL, `total_price` decimal(10,2) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`order_id`), KEY `idx_user_id` (`user_id`), CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在以上代碼中,“order_id”字段使用了“auto_increment”關(guān)鍵字,這樣每插入一條記錄時,“order_id”都會自動遞增,不需要手動指定。而其他字段則沒有使用“auto_increment”,需要手動指定值。
需要注意的是,只有主鍵字段才可以使用“auto_increment”關(guān)鍵字。如果在非主鍵字段上使用了“auto_increment”,會導(dǎo)致創(chuàng)建表失敗。
CREATE TABLE `article` ( `article_id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `content` text NOT NULL, `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, PRIMARY KEY (`article_id`), UNIQUE KEY `idx_title` (`title`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ALTER TABLE `article` CHANGE `article_id` `article_id` int(11) NOT NULL AUTO_INCREMENT; --會報錯
以上代碼中,在創(chuàng)建“article”表時,“article_id”字段是普通的非主鍵字段,沒有使用“auto_increment”。之后嘗試使用ALTER TABLE命令將其改為自增字段,但是會報錯。
因此,需要在創(chuàng)建表時就確定哪些字段需要自增,并在表定義中加上“auto_increment”關(guān)鍵字。