Gå til innhold

Anbefalte innlegg

Jeg har opprettet tabellen

 

CREATE TABLE plattform (

id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

navn varchar(255),

utgivelsesaar int);

 

Og vil sette inn henholdsvis "PC" "1981" og "XBOX360" "2005" i denne tabellen. Det jeg lurer på er hva jeg skal skrive i feltet for id når jeg har AUTO_INCREMENT. Skal jeg skrive noe i det hele tatt? Noe slik:

 

INSERT INTO plattform

VALUES (, 'PC', 1981);

INSERT INTO plattform

VALUES (, 'XBOX360', 2005);

 

?

Lenke til kommentar
Videoannonse
Annonse

Her har du to valg

A:

INSERT INTO plattform VALUES (NULL, 'PC', 1981);
INSERT INTO plattform VALUES (NULL, 'XBOX360', 2005);

B:

INSERT INTO plattform (navn, utgivelsesaar) VALUES ('PC', 1981);
INSERT INTO plattform (navn, utgivelsesaar) VALUES ('XBOX360', 2005);

 

Dette er godt beskrevet i manualen

 

 

 

...når det er sagt så regner jeg med at du skal knytte dettee mot en annen tabell som har blandt annet "tittel". For at du skal få det til så må du lagre ID-en til tittelen i tabellen men platformen.

 

ENUM er nok også en god ide fremfor VARCHAR(255) for navnet til platformen.

Lenke til kommentar
ENUM er nok også en god ide fremfor VARCHAR(255) for navnet til platformen.

Nope, det er det ikke. De forskjellige gyldige verdiene til en enum spesifiseres designtime, og plattformer er noe som kommer og går, så det vil i så fall bli behov for å kunne endre på listen ettersom nye spillconsoller dukker opp. Derfor bør plattform være en varchar. Nå er det neppe kritisk her, men generelt mener jeg man bør begrense datatypene så mye som mulig, også lengden for varchar. En probelmstilling rundt dette i MSSQL (om det er tilsvarende i andre databaser er jeg ikke sikker på) kan dere lese om på min blog.

Lenke til kommentar
Her har du to valg

A:

INSERT INTO plattform VALUES (NULL, 'PC', 1981);
INSERT INTO plattform VALUES (NULL, 'XBOX360', 2005);

B:

INSERT INTO plattform (navn, utgivelsesaar) VALUES ('PC', 1981);
INSERT INTO plattform (navn, utgivelsesaar) VALUES ('XBOX360', 2005);

 

Og når jeg gjør det på denne måten vil nummereringen starte med 1,2,3,4,5...?

Lenke til kommentar
Og hvis tabellen er tom? Starter den med 0 eller 1?

Unnskyld meg, men gidder du ikke å sjekke noe som helst selv, eller prøve den koden folk gir deg? Da hadde du visst dette, men for å være småfrekk: All den tid en autoinkrementerende verdi av natur er en surrogatnøkkel så er det ikke av forretningsmessig betydning. Det kan også tenkes at google har et og annet svar til deg :)

 

Kort og presist fortalt: Hva AUTO_INCREMENT begynner på kommer an på hvordan du bruker den :D

Endret av roac
Lenke til kommentar
INSERT INTO plattform VALUES (NULL, 'PC', 1981);
INSERT INTO plattform VALUES (NULL, 'XBOX360', 2005);

Personlig synes jeg denne er småstygg. NULL er av natur en bestemt verdi, eller rettere sagt ingen verdi. Her sier du egentlig at det ikke skal settes noen verdi inn i kolonnen, hvis MySQL likevel setter inn standardverdien så synes jeg det er småstygt, for å si det pent.

 

SQL Server på sin side lar deg ganske enkelt ikke spesifisere verdier for en autoinkrementerende kolonne, såfremt du ikke spesielt åpner for dette.

Lenke til kommentar
Og hvis tabellen er tom? Starter den med 0 eller 1?

Unnskyld meg, men gidder du ikke å sjekke noe som helst selv, eller prøve den koden folk gir deg? Da hadde du visst dette, men for å være småfrekk: All den tid en autoinkrementerende verdi av natur er en surrogatnøkkel så er det ikke av forretningsmessig betydning. Det kan også tenkes at google har et og annet svar til deg :)

 

Kort og presist fortalt: Hva AUTO_INCREMENT begynner på kommer an på hvordan du bruker den :D

 

Har ikke tilgang på database-verktøy nå.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...