07. september 2006 - 14:11Der er
11 kommentarer og 1 løsning
Typecasting i MySQL
Hej alle
Nedenstående query fungere kun hvis min database ikke er tom:
INSERT INTO product_cats (priority, active) SELECT MAX(priority)+1, 1 FROM product_cats
Det er fordi at den ikke finder nogen max-værdi i 'priority' hvis tabellen er tom. Kan man dog ikke typecaste den returnerede værdi til en integer, så et evt. null-resultat vil blive typecastet til værdien 0, og herefter kan adderes med 1.
Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
Hov, glemte lige at svare, men brugte IFNULL som jeg fandt ved erikjacobsen's hjælp, men smid et par svar. Så skal jeg gi' point. Der udover, hvorfor er du, erikjacobsen, betænkelig ved MAX+1 princippet?
erikjacobsen:> Når jeg gør det på denne måde, skulle der (efter min overbevisning) ikke kunne ske det du nævner. Når det hele bliver foretaget i ét kald, sker det så ikke med gensidig udelukkelse (mutual exclusion)?
Blev det istedet gjort i to kald, f.eks. med først et udtræk af max værdien, som herefter blev brugt i et nyt kald, så ville der kunne ske det du snakker om... Er jeg helt forkert på den?
Jeg vil ikke tro at hele tabellen product_cats bliver låst ved operationen. Og kan du passende besværgelser til at låse den, så er det da lidt af en stopklods i systemet.
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.