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 в размеры.