pengolf Skrevet 21. november 2007 Del Skrevet 21. november 2007 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
BlueEAGLE Skrevet 21. november 2007 Del Skrevet 21. november 2007 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
roac Skrevet 21. november 2007 Del Skrevet 21. november 2007 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
pengolf Skrevet 21. november 2007 Forfatter Del Skrevet 21. november 2007 Her har du to valgA: 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
Manfred Skrevet 21. november 2007 Del Skrevet 21. november 2007 Det vil starte en over siste brukte, og øke automatisk med 1 for hver gang Lenke til kommentar
pengolf Skrevet 21. november 2007 Forfatter Del Skrevet 21. november 2007 Og hvis tabellen er tom? Starter den med 0 eller 1? Lenke til kommentar
roac Skrevet 21. november 2007 Del Skrevet 21. november 2007 (endret) 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 Endret 21. november 2007 av roac Lenke til kommentar
roac Skrevet 21. november 2007 Del Skrevet 21. november 2007 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
pengolf Skrevet 21. november 2007 Forfatter Del Skrevet 21. november 2007 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 Har ikke tilgang på database-verktøy nå. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå