Jag skulle behöva hämta ut ett id som jag strax innan lagt in i en tabell för att använda detta som en främmande nyckel i en annan insert i en annan tabell....
Först sätter jag in detta i en tabell..... i denna tabell genereras ett automatiskt id som jag direkt vill ha ut och använda som en främmande nyckel i en senare insertsats.........
"INSERT INTO LokalGrupp(namn,ou)VALUES('"&lokalNamn(i)&"','"&Lm.Name&"')"
Vad jag undrar.... vad är smidigast för att lösa detta? En select sats som hämtar det högsta numret av de Id:n som finnes å tar det... Är detta säkert? Finns det andra problem med detta?
Jag är inte riktigt med..... skriver jag Select @@identity some n egen fråga direkt efter?? Iså fall så får jag bara 0 av nån anledning.... eller lägger jag till det efter insertsatsen i samma fråga?? Känne rmig lite trög!
Jag är inte riktigt med..... skriver jag Select @@identity some n egen fråga direkt efter?? Iså fall så får jag bara 0 av nån anledning.... eller lägger jag till det efter insertsatsen i samma fråga?? Känne rmig lite trög!
Du gör en vanlig select från samma anslutning efter att du gjort din insert. Först insert, sen select.
När du säger SELECT @@identity as last_id får du fram det senaste id:t som automatgenererats och plockar sedan fram det med dinrecordset("last_id")
Ciliax skrev:
Varför om jag törs fråga är inte Max(id) bra?
Därför att du inte frågar efter det du vill ha. Resultatet blir förmodligen detsamma, men det du frågar efter är det högsta id-numret, inte det från inserten du körde. Teoretiskt sett finns det en möjlighet att det inte är samma. Anta t.ex. att det här ligger på en webbserver, och två personer arbetar samtidigt. Om båda begär att få lägga in varsin ny post samtidigt, måste naturligtvis arbetet fördelas. Anta då att person #1 gör sin insert, sen går turen över till tråden som sköter person #2 som gör sin insert. Efter detta går turen tillbaks till #1 som gör sin select för att hitta id:t från inserten. Använder man då max(id) får man id:t från person #2:s insert, @@identity funkar däremot som förväntat.
Jag tackar å bugar.... Problemet var att jag inte använde samma connection.... Nu funkar det klockrent...
Tackar även för den fina förklaringen om Max(id)....
Problemet är att Last_ID hela tiden blir 0 (noll)
Kan det här bero på att jag använder "Replikerings ID"? För på ett annat ställe kör jag samma grej, vilket funkar bra där, skillnaden är att jag kör en vanlig "räknare" med heltal.
För att ta reda på det senaste ID:t måste du ha en räknarkolumn.
Du får lägga till en sådan, hämta ut @@identity, och sedan hämta ut replikerings-id:t som tillhör posten med uthämtat räknarvärde.
Varför använder du replikerings-ID?
mvh
270 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91