26. juni 2002 - 15:30Der er
24 kommentarer og 1 løsning
Indstilling af næste værdi for autoindeksering
Hvordan indstiller jeg den til at være det jeg vil. Det drejer sig om tal der skal bruges til en stregkode så jeg er nødt til at kunne indstille starten for autoindekseringen.
Det er efter at tabellen er oprettet og der er data i. Antallet af row er 522 og næste værdi i auto-increment er 676. Det jeg ønsker er at sætte næste værdi i auto-increment til at være 523. Lidt i stil med Oracles' "index.next_val".
med programmere dig ud af det, mener jeg at program der kommunikerer med databasen sørger for værditildelingen at en "almindelig" INT-kolonne primary key
Det er jo selvfølgelig meget smart at man ikke selv kan det, men det er sgudda upraktisk.... så er det smartere i virkeligheden at kopiere værdier over i en ny tabel med en ny auto-increment tilkoblet pk...
Dette giver den næste række du indsætter værdien 523 i AUTO_INCREMENT feltet. Herefter fortsætter den selv med 524, 525 o.s.v. i efterfølgende inserts.
Hvis du eks. på et tidspunkt for behov for at nulstille dine AUTO_INCREMENT værdier, kan du gøre dette:
1. Opret en midlertidig kopi af din tabel, med undtagelse af ID feltet. 2. Kopier alle poster fra tabellen over i den midlertidige tabel med INSERT-INTO-SELECT 3. Lav en TRUNCATE TABLE på den oprindelige tabel 4. Kopier alle poster tilbage i den oprindelige tabel med INSERT-INTO-SELECT 5. Drop den midlertidige tabel
Hokus pokus, nu er alle AUTO_INCREMENT værdier i dit ID felt nulstillet :-)
tmceu >> dit første løsningforslag lød simpelt, men jeg er dog i tvivl om hvordan det rent praktisk gøres.
Hvorhenne laver jeg kaldet "SET INSERT_ID = 523" ? Og med "INSERT INTO MinTabel....." mener du så en ordinær SQL insert sætning uden værdier for feltet med autonummereringsværdien ?
Jeg vil mene at det er bedst at lave på konsollen, alternativt PhpMyAdmin el.lign. og ja, jeg mener en ordinær insert uden værdi i AUTO_INCREMENT feltet. Denne insert er for at "comitte" ændringen af INSERT_ID.
Mit sidste eksempel var ment som en metode til at fjerne evt. huller i ID'erne, hvis du mener dette er kritisk.
tmceu >> den sidste du nævnte har jeg allerede lavet, dog i en anden afskygning, det er derfor at jeg har et autonummer der ligger væsenligt højere end det reelle antal rows.
mht. "set insert_id = XX " så har jeg adgang til både konsol, phpmyadmin og mysqlfront (lækkert btw.)... men hvorhenne i disse "fyrer" jeg en sådan kommando af ?
Direkte fra kommandolinien i konsollen. Denne burde du kunne sætte en chimpanse til at udføre :-)
1. Start en kommandopromt 2. gå til \bin folderen for MySQL 3. skriv mysql + enter 4. skriv use databasenavn + enter 5. skriv SET INSERT_ID = 523; + enter 6. skriv INSERT INTO.... + enter
i prompten når jeg forsøger at logge på databasen. Jeg har prøvet forsk. kombinationer af parametrene "user, password, database" i røven på "mysql"... men kan ikke ramme det rigtige... hvad skriver jeg præcist for at angive user ?
men nu er jeg helt flad i hovedet og min kæreste er kommer hjem, så jeg vil gå i seng og håbe at problemet får løst sig i morgen... håber du fortsat kan hjælpe og ellers tak for hjælpen
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.