spango Medlem sedan juni 2000 8 205 inlägg Frågan 12 mars 2001 17:54 #1 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))
------------------
Tror du på ett liv efter födseln?
@nders Medlem sedan juni 2000 32 967 inlägg 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,
------------------
<A HREF="http://cartman.nu " TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>
[Redigerat av @nders den 12 mar 2001]
spango Medlem sedan juni 2000 8 205 inlägg Nä, jag pratade hypotetiskt ;)
Det finns alltså inget generellt sätt att göra det på?
------------------
Tror du på ett liv efter födseln?
@nders Medlem sedan juni 2000 32 967 inlägg nix, pix päronpung. :)
du ska inte komma här och generalisera! ;)
------------------
<A HREF="http://cartman.nu " TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>
spango Medlem sedan juni 2000 8 205 inlägg 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 ;)
------------------
Tror du på ett liv efter födseln?
@nders Medlem sedan juni 2000 32 967 inlägg bra! ;)
------------------
<A HREF="http://cartman.nu " TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>
S SPiN Medlem sedan mars 2000 7 896 inlägg 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 ;)
------------------
SPiN, bjorne.w@telia.com
--- Är det bara jag som har en britney-cursor? ---
spango Medlem sedan juni 2000 8 205 inlägg SELECT LAST_INSERT_ID();
Blir det i MySQL. Men då kan man ju inte generalizera ;)
------------------
Tror du på ett liv efter födseln?
Toonster Medlem sedan feb. 2000 1 590 inlägg 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
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
spango Medlem sedan juni 2000 8 205 inlägg Nå, det var väl det man kunde ana. Det suger att jämt ha rätt ;)
------------------
Jag är en tolerant person, men bara mot de jag gillar, så passa dig!