Avatar billede tommyf Nybegynder
05. august 2002 - 04:33 Der er 16 kommentarer og
1 løsning

SQL kommando til aendring af id/felt

Jeg mangler en SQL kommando jeg kan køre på en MySQL database. Den skal ændre feltet id til en over hvad det var før, hvis id er lig med, eller større end 27.

Saa 30 bliver 31, 40 bliver 41, men 15 forbliver 15.


Kan det hurtig ordnes med en SQL/forespørgelse??
Avatar billede dmcn Praktikant
05. august 2002 - 05:27 #1
UPDATE tabel SET id = id + 1 WHERE id > 27
Burde gøre det. :]
Avatar billede criterius.dk Nybegynder
05. august 2002 - 08:26 #2
UPDATE tabel set id = id + 1 WHERE id > 26

eller

UPDATE tabel set id = id + 1 WHERE id >= 27
Avatar billede tommyf Nybegynder
05. august 2002 - 15:01 #3
Den retunere denne fejl - nogen forklaring:

MySQL said: Duplicate entry '29' for key 1
Avatar billede dmcn Praktikant
05. august 2002 - 15:05 #4
Den var straks sjovere. Enten skal du, mens du ændrer, slå unique fra på feltet, eller også skal du, somehow, få den til at starte "oppefra", altså fra det højeste tal, og så arbejde sig nedad.
Avatar billede tommyf Nybegynder
05. august 2002 - 15:17 #5
Den er ikke  Unique - men den er primary (så det er vel det samme.)
Hvordan fjerner jeg den egenskaben Primary?
Avatar billede dmcn Praktikant
05. august 2002 - 15:22 #6
Hvad bruger du til at administrere databasen? Og vigtigst: Sker der ændringer i databasen mens du leger med den? (Eks.: Brugere der opretter sig, osv.)
Avatar billede tommyf Nybegynder
05. august 2002 - 16:51 #7
Det er en test-database som selvfølgelig ikke bliver opdateret mens jeg leger med den. Jeg bruger phpmyadmin version 2.1.0.
Avatar billede dmcn Praktikant
05. august 2002 - 16:54 #8
OK - så fjern alle egenskaber for ID-feltet (auto_increment osv.) og prøv igen. Problemet er, at DB'en har sat ID-feltet som unikt, hvilket giver fejlen når du prøver at skifte ID'et.
Avatar billede tommyf Nybegynder
05. august 2002 - 17:04 #9
Hvis jeg trykker "Change" kan jeg få lov til, at fjerne auto_increment. Hvis jeg trykker "Primary" bliver den bare sat til Primary 2 gange. Og jeg kan ikke fjerne "Unique" ved, at trykke en gang til.
Avatar billede dmcn Praktikant
05. august 2002 - 17:09 #10
Hmm... jeg har lige leget lidt med en test-DB. Prøv engang først at slå auto_increment fra, og derefter trykke Delete ud for Primary.
Avatar billede tommyf Nybegynder
05. august 2002 - 17:15 #11
Der er følgende muligheder:

Field Type Attributes Null Default Extra Action
id  int(6)    No  0    Change Drop Primary Index Unique

Under change er der ikke noget med primary.
Avatar billede tommyf Nybegynder
29. august 2002 - 07:12 #12
Du har ikke andre forslag?
Avatar billede criterius.dk Nybegynder
08. oktober 2002 - 10:19 #13
LUKKETID?
Avatar billede tommyf Nybegynder
08. oktober 2002 - 14:57 #14
criterius.dk >> Det er da det sidste det er. Og stop så det råberi.
Avatar billede tommyf Nybegynder
23. januar 2003 - 09:03 #15
Lukker uden løsning
Avatar billede swaq Nybegynder
03. januar 2004 - 04:14 #16
Ved godt jeg er omkring et år forsent på den, men jeg har fundet løsningen i denne artikel: http://www.mysql.com/newsletter/2003-09/a0000000224.html

Løsningen i dit tilfælde er: UPDATE tabel SET id = id + 1 WHERE id > 27 ORDER BY id DESC
Avatar billede swaq Nybegynder
03. januar 2004 - 04:26 #17
Lille detalje: virker kun på version 4.0.0+ :O)
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
Kurser inden for grundlæggende programmering

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