spangoMedlem sedan juni 20006 147 inlägg
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?
@ndersMedlem sedan juni 200026 914 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]
spangoMedlem sedan juni 20006 147 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?
@ndersMedlem sedan juni 200026 914 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>
spangoMedlem sedan juni 20006 147 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?
@ndersMedlem sedan juni 200026 914 inlägg
bra! ;)
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>
SPiNMedlem sedan mars 20005 832 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? ---
spangoMedlem sedan juni 20006 147 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?
ToonsterMedlem sedan feb. 20001 546 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..."
spangoMedlem sedan juni 20006 147 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!