2013-12-11 2 views
0
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 ; 

Это мое заявление о вставке.Как вставить данные в MySQL, передав значение '' для автоинкрементного столбца?

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.

ответ

0

Попробуйте выполнить этот запрос для вставки:

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

Вам не нужно указать столбец первичного ключа, как будет автоматически вставлен.

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'); 
0

значений не требуется AUTO_INCREMENT поля, как он будет автоматически генерироваться. поэтому вы можете вставить строку без указания значения для столбца uid.

0

пользователь либо из следующих

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

ИЛИ

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

С вашей колонки UID идентификатор автоматически увеличивается, вам не нужно передать значение во время вставки. Попробуйте это:

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

Это будет работать на всех системах и ваш UID получит автоматическое приращение.

Смежные вопросы