Sto provando ad inserire un record nella tabella dim_channel con zero per la chiave primaria (int unsigned).mysql non può inserire record con chiave primaria non firmata pari a zero
comando di MySQL:
INSERT INTO dim_channel
set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';
Risultati:
select * from dim_channel;
+------------+-------+-------------------+---------------------+
| channel_id | name | parent_channel_id | parent_channel_name |
+------------+-------+-------------------+---------------------+
| 1 | Other | 0 | Other |
+------------+-------+-------------------+---------------------+
prega di notare che channel_id ha il valore 1, non 0 come mi aspettavo.
Nessuno sa perché questo accade.
A proposito, posso aggiornare il record come: aggiornamento dim_channel set channel_id = 0 dove channel_id = 1;
Voglio solo sapere perché non riesco a inserire il record con channel_id = 0 al primo posto.
Grazie mille.
====== comando MySQL per voi per testare ====
- Crea una tabella
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
- inserire record di
INSERT INTO dim_channel set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';
- vedi risultato
select * from dim_channel;
mysql presuppone che 0 significhi "dammi il prossimo ID" per le colonne auto_increment. Se davvero vuoi uno 0 a cui non appartiene, quindi usa un aggiornamento dopo l'inserimento. –