Avatar billede donpedrodelavega Nybegynder
26. juni 2002 - 15:30 Der 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.
Avatar billede medions Nybegynder
26. juni 2002 - 15:34 #1
Autoincreatment hvis det er autonumnering du vil have... og så skal du oxo lige huske at have en Primary Key på det felt du sætter Autoincreament på!

//>Rune
Avatar billede donpedrodelavega Nybegynder
26. juni 2002 - 15:36 #2
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".
Avatar billede donpedrodelavega Nybegynder
26. juni 2002 - 15:37 #3
sidstnævnte bemærkning ang. Oracles' "next_val" bedes strøget fra "the records"
Avatar billede fri-hash Nybegynder
26. juni 2002 - 15:48 #4
du kan ikke selv bestemme værdien i en autoincrement-kolonne

du kan heller ikke "genbruge" allerede brugte værdier, selvom den originale tuppel er slettet

så skal du programmere dig ud af det i det program der kommunikerer med databasen
Avatar billede fri-hash Nybegynder
26. juni 2002 - 15:49 #5
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
Avatar billede donpedrodelavega Nybegynder
26. juni 2002 - 15:51 #6
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...
Avatar billede fri-hash Nybegynder
26. juni 2002 - 16:15 #7
hvad der er smartest afhænger meget af datamodelleringen osv.
Avatar billede tmceu Praktikant
27. juni 2002 - 00:22 #8
Du kan bruge denne metode:

SET INSERT_ID = 523

INSERT INTO MinTabel.....

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.
Avatar billede tmceu Praktikant
27. juni 2002 - 00:26 #9
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 :-)
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 00:45 #10
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 ?
Avatar billede tmceu Praktikant
27. juni 2002 - 00:52 #11
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.
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 00:55 #12
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 ?
Avatar billede tmceu Praktikant
27. juni 2002 - 01:02 #13
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
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:02 #14
er det en SQL sætning og bliver den deror bare fyret af som en sådan eller er det som en prompte ?
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:06 #15
At gå i en prompte og gøre det er det vanskeligste da jeg så skal logge på serveren gennem GUI. Kan man gøre det fra PhpMyAdmin ?
Avatar billede tmceu Praktikant
27. juni 2002 - 01:07 #16
Det burde du kunne gøre. Jeg ville bare nødig gøre det eks. via ASP, for du skal holde din connection mellem de 2 statements.
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:09 #17
ahh... det er derfor det ikke virker i PhpMyAdmin
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:09 #18
oki... jeg logger på og laver en prompte version
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:12 #19
access denied.... :-(
Avatar billede tmceu Praktikant
27. juni 2002 - 01:13 #20
access denied hvor ?
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:17 #21
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 ?
Avatar billede donpedrodelavega Nybegynder
27. juni 2002 - 01:27 #22
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
Avatar billede tmceu Praktikant
27. juni 2002 - 01:28 #23
mysql -u dinbruger -p

derefter skulle du blive promptet for password og være inde ved mysql> prompten
Avatar billede donpedrodelavega Nybegynder
01. september 2002 - 14:04 #24
har fået løst problemet...
tak for hjælpen.

/ DonPedro
Avatar billede tmceu Praktikant
02. september 2002 - 09:25 #25
Det var så lidt :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester