Avatar billede locturian Nybegynder
28. marts 2005 - 11:24 Der er 8 kommentarer og
1 løsning

Finde MAX(kolonne) direkte fra MSSQL

Hej,

Jeg sidder med et problem.

Jeg vil gerne kunne (direkte i min tabel) oprette en ny record, der har et felt der har værdien af max-summen for den givne række, + 1. Men, idét at jeg ikke kan bruge Max(SomeID) som en gyldig funktion i "default" atributten, er jeg lidt lost.

Altså:

1) [Navn] Fisk1  [SomeID] 110
2) [Navn] Fisk2  [SomeID] 150 
3) [Navn] Fisk3  [SomeID] 178
Ny Record) [Navn] Fisk4  [SomeID] (179) <---- Denne bliver til 179, da højeste værdi er 178(+1)       

Hvordan kan dette løses ?
Avatar billede arne_v Ekspert
28. marts 2005 - 11:26 #1
Kan du ikke bare sætte kolonnen til at være IDENTITY og så lade SQLServer
selv sætte en værdi ind ?
Avatar billede arne_v Ekspert
28. marts 2005 - 11:26 #2
(ligesom Access auto number og MySQL auto increment)
Avatar billede locturian Nybegynder
28. marts 2005 - 11:30 #3
Nej, kan jeg ikke.... - Idét at jeg skal bruge det til sortering. Så der skal bare ligges 1 til max værdien. Så ville det være dumt at have værdi der hed 10, og en der pludselig hed 1000 :)
Avatar billede arne_v Ekspert
28. marts 2005 - 11:38 #4
10 og 1000 bliver da sorteret korrekt.

IDENTITY ligger iøvrigt default 1 til.

Det er ikke helt simpelt at få lavet en MAX() + 1 som virker i en flerbruger
sammenhæng.

Måske en stored procedure som gør det (med transaction isolation level
serializable).
Avatar billede locturian Nybegynder
28. marts 2005 - 11:40 #5
IDENTITY lægger 1 til default ja, men ikke til den nuværende værdi, men til den værdi den selv "tæller" hen ad vejen.

Har også overvejet at lave det som en SPROC, ville bare se om der var en nemmere 'udvej' :)
Avatar billede arne_v Ekspert
28. marts 2005 - 11:57 #6
Den starter med 1 og tæller op med 1. Der bliver kun huller hvis du sletter
rækker. Og det gør det jo også med MAX()+1 metoden (bortset fra det special
tilfælde hvor der altid kun slettes fra oven af).

Jeg har aldrig set en MAX()+1 løsning som jeg vil kalde bedste løsning på
en problem stilling.
Avatar billede jtbroad Nybegynder
01. april 2005 - 13:40 #7
kan du ikke sæt den ind i formula feltet?
Avatar billede locturian Nybegynder
29. september 2005 - 16:47 #8
Kunne være jeg skulle lukke det her spørgsmål - Arne, du var aktiv, læg et svar, så får du point... ;)
Avatar billede arne_v Ekspert
29. september 2005 - 17:34 #9
ok
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