如何通过为自动递增列传递值''来向MySQL插入数据?

时间:2013-12-11 05:52:55

标签: mysql

CREATE TABLE IF NOT EXISTS `myproducts` (
              `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
              `parent_id` int(10) unsigned DEFAULT NULL,
              `type_id` varchar(64) COLLATE utf8_czech_ci NOT NULL DEFAULT 'NormalPage',
              `name` varchar(255) COLLATE utf8_czech_ci NOT NULL DEFAULT '',
              PRIMARY KEY (`uid`),
              KEY `index_2` (`type_id`,`t`),
              KEY `name` (`name`),
              KEY `parent_id` (`parent_id`,`name`(48))
            ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=189 ;

这是我的插入声明。

INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES ('',20, 'Product Category', 'WaterBottels'); 

问题描述: 当我在我的系统中使用这个插入查询时,它具有mysql版本5.5.16,它完美地插入了记录但是当我在另一个系统中尝试这个时,它也有mysql版本5.5.16,它给出了问题。

我知道我们应该为自动增量列传递NULL或'0',但我的问题是为什么它适用于我的实例。

因为它适用于我的实例,我正在考虑我们可以传递''作为自动增量列的值。如果是这样在其他系统中解决,我需要更改任何mysql配置。

5 个答案:

答案 0 :(得分:0)

尝试执行此查询以插入:

INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`) 
VALUES (20, 'Product Category', 'WaterBottels');

您无需指定主键列,因为它将自动插入。

答案 1 :(得分:0)

由于您使用uid作为AUTO_INCREMENT

MySQL使用AUTO_INCREMENT关键字来执行自动增量功能。

默认情况下,AUTO_INCREMENT的起始值为1,每个新记录的起始值都会增加1。

您可以使用

INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`) VALUES (20, 'Product Category', 'WaterBottels'); 

而不是

  INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES ('',20, 'Product Category', 'WaterBottels'); 

答案 2 :(得分:0)

AUTO_INCREMENT字段不需要值,因为它将自动生成。所以你可以插入一行而不指定列uid的值。

答案 3 :(得分:0)

以下任一用户

INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES
 (null,20, 'Product Category', 'WaterBottels');

OR

  INSERT INTO `mydb`.`myproducts` ( `parent_id`, `type_id`, `name`) VALUES
     (20, 'Product Category', 'WaterBottels');

答案 4 :(得分:0)

由于您的 uid 列自动递增,因此您无需在插入时传递值。试试这个:

INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`) VALUES (20, 'Product Category', 'WaterBottels');  

这适用于所有系统, uid 会自动增加。