自动增量跳转超过插入的行数?

时间:2014-10-03 10:24:05

标签: mysql innodb

我在mysql表中插入数据时遇到问题。自动增量跳过的次数超过插入的行数。请按照以下步骤重现该问题。此表未引用另一个表。此表上未创建任何触发器。没有在表上执行删除查询。

步骤1 - 在mysql中创建一个表。

CREATE TABLE IF NOT EXISTS `tbl_hostel_rooms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `hostel_id` int(11) NOT NULL,
  `room_no` int(11) NOT NULL,
  `total_sharing_for_room` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

步骤2 - 在表格中插入10行并分析结果。这将插入10行,AUTO_INCREMENT值将设置为11.这也是预期的。

INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '101', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '102', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '103', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '104', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '105', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '106', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '107', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '108', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '109', '3');
INSERT INTO `new_db`.`tbl_hostel_rooms` (`id`, `hostel_id`, `room_no`, `total_sharing_for_room`) VALUES (NULL, '1', '110', '3');

步骤3 - 使用此查询再插入10行,并分析结果。

INSERT INTO `tbl_hostel_rooms`(`hostel_id`, `room_no`, `total_sharing_for_room`) select `hostel_id`, `room_no`, `total_sharing_for_room` from tbl_hostel_rooms;

这将再插入10行,AUTO_INCREMENT值将设置为26.这不是预期的。现在只插入一行,AUTO_INCREMENT列ID将从27开始。

这个问题的解决方案是什么。

1 个答案:

答案 0 :(得分:0)

我认为这是由于明确提及" id"列是自动增量字段。尝试从查询中删除此字段。可能会解决问题。