webForumDet fria alternativet

auto_increment integer

6 svar · 165 visningar · startad av Rocket

RocketMedlem sedan feb. 2000353 inlägg
#1

Hur skpar man ett integer fält som är auto_increment, direkt i mysql med kommandon?

LarsGMedlem sedan dec. 200012 465 inlägg
#2
CREATE TABLE test (a int not null auto_increment,b char(12)
primary key (a))

t.ex.

------------------
essentitia preter non sans multiplicandum

RocketMedlem sedan feb. 2000353 inlägg
#3

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?

LarsGMedlem sedan dec. 200012 465 inlägg
#4

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

RocketMedlem sedan feb. 2000353 inlägg
#5

Då blir det lite mer frågor :)
Vad menas med:

UNSIGNED
och
ADD INDEX

LarsGMedlem sedan dec. 200012 465 inlägg
#6

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

RocketMedlem sedan feb. 2000353 inlägg
#7

Ok, tack för hjälpen.

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb