Próbuję wstawić jeden rekord do tabeli dim_channel z zerem dla klucza podstawowego (unsigned int).mysql nie może wstawić rekordu z niepodpisanym kluczem podstawowym będącym zero
Mysql polecenia:
INSERT INTO dim_channel
set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';
Wyniki:
select * from dim_channel;
+------------+-------+-------------------+---------------------+
| channel_id | name | parent_channel_id | parent_channel_name |
+------------+-------+-------------------+---------------------+
| 1 | Other | 0 | Other |
+------------+-------+-------------------+---------------------+
Uwaga CHANNEL_ID dostał wartość 1, a nie 0, jak się spodziewałem.
Każdy wie, dlaczego tak się dzieje.
Nawiasem mówiąc, mogę zaktualizować rekord jako: update dim_channel set channel_id = 0 where channel_id = 1;
Po prostu chcę wiedzieć, dlaczego nie mogę wstawić rekordu z channel_id = 0 na pierwszym miejscu.
Wielkie dzięki.
====== polecenia MySQL, aby przetestować ====
- Tworzenie tabeli
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
- wstawić rekord
INSERT INTO dim_channel set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';
- zobacz wynik
select * from dim_channel;
mysql zakłada 0 oznacza "podaj mi kolejny identyfikator" dla kolumn auto_increment. Jeśli naprawdę chcesz mieć 0, gdzie nie należy, użyj aktualizacji po wstawieniu. –