pratar du sql server nu?
i så fall så kan du göra så här:
insert into blabla (blah1, blah1) values ('blah1', 'blah2'); select @@identity
du får då ett jättepyttigt 1x1-recordset som innehåller id på den insertade posten.
mvh,
9 svar · 367 visningar · startad av spango
Hur plockar man smartast fram data från en nyligen inlagd rad i en tabell?
Ponera att man har en räknare som primärnyckel i en tabell. Man lägger in en ny rad i tabellen, men låter denna kolumn med räknaren automagiskt fylla i sig själv.
Om man då skulle vilja lägga in en massa poster relaterade till den tabellen, med den nya radens räknarfält som främmande nyckel.
Kort sagt: Hur får man fram data för den senast inlagda raden i en databas? Man kan fstås använda sig av nåt i stil med SELECT * FROM en_tabell ORDER BY räknaren ASC LIMIT 1 i MySQL, eller använda TOP 1 i Access, men det känns liksom inte rätt.
Vad göra? Nåt i stil med SELECT räknaren FROM (INSERT INTO en_tabell VALUES (1, 2, 3))
pratar du sql server nu?
i så fall så kan du göra så här:
insert into blabla (blah1, blah1) values ('blah1', 'blah2'); select @@identity
du får då ett jättepyttigt 1x1-recordset som innehåller id på den insertade posten.
mvh,
Nä, jag pratade hypotetiskt
Det finns alltså inget generellt sätt att göra det på?
Ok, jag hade tänkt att säga "tack" här, men jag tror jag struntar i det eftersom du inte gav det svar jag ville ha
bra!
Om du proggar PHP finns det en enkelt funktion för detta, typ mysql_select_id(); eller nåt liknande... Kommer inte ihåg den just nu
Men det har ju inte med SQL att göra
Eftersom det är en räknare, så kan du inte få ut detta id'et utan att skapa en ny fråga till databasen, när man använder script.
alltså:
Först INSERT
Sedan SELECT
Detta gäller även i MySql, med:
SELECT LAST_INSERT_ID();
Man måste köra en ny fråga med den select frågan.
Så man kommer nog inte undan 2 frågor i scriptet, fast man kan behöver bara en anslutning...
Man kan göra en komponent som lägger till data och returnerar id. Eller varför inte en Stored Procedure!
/T
Nå, det var väl det man kunde ana. Det suger att jämt ha rätt