mysql не может вставить запись с беззнаковым первичным ключом, равным нулю

Я пытаюсь вставить одну запись в таблицу dim_channel с нулем для первичного ключа (unsigned int).

команда Mysql:

INSERT INTO dim_channel 
set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';

результаты:

select * from dim_channel;
+------------+-------+-------------------+---------------------+
| channel_id | name  | parent_channel_id | parent_channel_name |
+------------+-------+-------------------+---------------------+
|          1 | Other |                 0 | Other               |
+------------+-------+-------------------+---------------------+

обратите внимание, что channel_id получил значение 1, а не 0, как я ожидал.

любой знает, почему это происходит.

кстати, я могу обновить запись в: обновить dim_channel установить channel_id=0, где channel_id=1;

просто хочу знать, почему я не могу вставить записи с channel_id=0 на первом месте.

Спасибо большое.

====== MySQL команда для вас, чтобы проверить ====

-- создать таблицу

CREATE TABLE `dim_channel` (
  `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` char(80) DEFAULT NULL,
  `parent_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
  `parent_channel_name` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`channel_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

-- вставить запись

INSERT INTO dim_channel set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';

-- видеть результат

select * from dim_channel;

2 ответов


это потому, что у вас есть первичный ключ с автоматическим приращением в этом поле. При назначении NULL или 0 для этого значения при вставке он явно даст вам следующий номер в последовательности для таблицы.


Я знаю, что это старый пост, но в любом случае:

использование:

SET sql_mode='NO_AUTO_VALUE_ON_ZERO';

перед вставкой значения 0 в размеры.