Sto usando un server MySQL 5.0. Il mio requisito è quello di aggiungere una riga speciale a una tabella esistente che abbia una chiave primaria con incremento automatico.Posso usare zero in una colonna che ha l'attributo AUTO_INCREMENT
Sarebbe molto utile per la manutenzione e la gestione del progetto in futuro se fossimo in grado di rendere l'ID di questa riga 0 (perché è facile da ricordare e facile da individuare nelle osservazioni manuali).
Ora, so che MySQL non ha alcun problema con l'utilizzo del proprio valore per una colonna autoincrement, e i miei test hanno dimostrato che posso impostare la chiave primaria di incremento automatico di una riga su 0 con una query UPDATE. Tuttavia, sono state espresse alcune preoccupazioni su come questo potrebbe influire sulla funzionalità di incremento automatico della colonna in futuri INSERT.
I miei esperimenti (limitati) non hanno mostrato nulla di strano e non riesco a trovare alcun avviso specifico nei documenti MySQL. Cioè, a parte questa (sottolineatura mia): http://dev.mysql.com/doc/refman/5.0/en/create-table.html
ci può essere solo una colonna AUTO_INCREMENT per tabella, deve essere indicizzato, e non può avere un valore predefinito. Una colonna AUTO_INCREMENT funziona correttamente solo se contiene solo valori positivi. L'inserimento di un numero negativo viene considerato come l'inserimento di un numero positivo molto grande. Questo viene fatto per evitare problemi di precisione quando i numeri “avvolgono” over da positivo a negativo e anche per garantire che non si accidentalmente ottiene una colonna AUTO_INCREMENT che contiene 0.
non riesco a trovare una spiegazione per cosa c'è di sbagliato nell'avere un valore pari a zero in una colonna AUTO_INCREMENT, quindi qualcuno può dirmi se avere una colonna AUTO_INCREMENT che contiene 0 è una cosa negativa?
Buona chiamata su reimport. Non l'avevo considerato come non lo facciamo spesso, ma ne prenderemo nota nel caso in cui lo facciamo. Per quanto ne so, non c'è niente di sbagliato con 0 in una colonna di incremento automatico :). Ma quella nota che ho citato suggerisce il contrario, quindi speravo di ottenere una risposta che spiegasse perché il manuale di riferimento lo dice, o perché potrebbe essere sbagliato. Quanto sei sicuro che non ci sia nulla di sbagliato in 0 in una colonna di incremento automatico? –
Sono abbastanza sicuro che starai bene. Questa volta ho avuto uno 0 in un campo di autoincremento a causa di un bug nel mio codice, non ha avuto effetti collaterali avversi. – e4c5