Hur skpar man ett integer fält som är auto_increment, direkt i mysql med kommandon?
auto_increment integer
6 svar · 165 visningar · startad av Rocket
CREATE TABLE test (a int not null auto_increment,b char(12)
primary key (a))
t.ex.
------------------
essentitia preter non sans multiplicandum
Ok, följdfråga:
Vad menas med ”primary key (a)” och varför skriver man det?
Med det du skrev skapar man ju en helt ny table med två fält, det är inget annat man ska tänka på om man vill lägga till ett auto_increment fält till en table man redan har?
primary key(a) innebär att kolumnen a utgör en primärnyckel för tabellen. Det innebär att den kolumnen inte får innehålla några duplikat. En primärnyckel kan bestå av en eller flera kolumner.
Har man gjort en riktig datamodell så skall varje tabell innehålla en primärnyckel.
Om man vill lägga till en kolumn med autoincrement så borde man kunna göra
ALTER TABLE ogrish ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD INDEX (c);
------------------
essentitia preter non sans multiplicandum
Unsigned tillåter bara positiva tal.
Tydligen så kräver Mysql, att man skapar ett index för kolumner som har attributet auto_increment. (Jag tycker att det borde kunna hanteras implicit.)
Ett index gör sökning effektivare. Desto mer data man har, desto mer tjänar man på att ha ett index. Ett index kostar något att underhålla när man uppdaterar eller lägger till data.
------------------
essentitia preter non sans multiplicandum
Ok, tack för hjälpen.