我正在查看生成的mysqldump文件并发现奇怪的事情。创建表时的AUTO_INCREMENT是2.第一个插入使用1.在数据库中插入低于自动增量值的值有什么不对吗?
DROP TABLE IF EXISTS `phppos_locations`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `phppos_locations` (
`location_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) COLLATE utf8_unicode_ci DEFAULT '',
`address` tinytext COLLATE utf8_unicode_ci,
`phone` varchar(30) COLLATE utf8_unicode_ci DEFAULT '',
`fax` varchar(30) COLLATE utf8_unicode_ci DEFAULT '',
`email` varchar(100) COLLATE utf8_unicode_ci DEFAULT '',
`receive_stock_alert` int(1) DEFAULT '0',
`stock_alert_email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`return_policy` text COLLATE utf8_unicode_ci,
`timezone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`mailchimp_api_key` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`enable_credit_card_processing` int(1) DEFAULT NULL,
`merchant_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`merchant_password` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`default_tax_1_rate` decimal(15,3) DEFAULT NULL,
`default_tax_1_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`default_tax_2_rate` decimal(15,3) DEFAULT NULL,
`default_tax_2_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`default_tax_2_cumulative` int(1) DEFAULT '0',
`deleted` int(1) DEFAULT '0',
PRIMARY KEY (`location_id`),
KEY `deleted` (`deleted`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `phppos_locations`
--
LOCK TABLES `phppos_locations` WRITE;
/*!40000 ALTER TABLE `phppos_locations` DISABLE KEYS */;
INSERT INTO `phppos_locations` VALUES (1,'Default','123 Nowhere street','555-555-5555','','admin@phppointofsale.com',NULL,NULL,'Test','America/New_York',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
/*!40000 ALTER TABLE `phppos_locations` ENABLE KEYS */;
UNLOCK TABLES;
答案 0 :(得分:1)
从http://dev.mysql.com/doc/refman/5.1/en/create-table.html
复制整数或浮点列可以具有附加属性AUTO_INCREMENT。将值NULL(推荐)或0插入索引的AUTO_INCREMENT列时,该列将设置为下一个序列值。通常,这是值+ 1,其中value是表中当前列的最大值。 AUTO_INCREMENT序列以1开头。
这意味着如果您插入非NULL或0,将保留您插入的内容
答案 1 :(得分:0)
AUTO_INCREMENT
语句中的CREATE TABLE
值表示MySQL打算用于该表上下一个插入的自动增量值,截至您转储模式的时间。由于当时表中有一行,并且它的自动增量值为1,因此2是下一个预期值是有意义的。
由于insert显式地将location_id设置为1,因此它不会对该行使用自动增量。