webForumDet fria alternativet

Skapa poster i två tabeller samtidigt

Databaser & SQL

5 svar · 310 visningar · startad av SONICdust

Medlem sedan nov. 2003196 inlägg
Frågan#1

Kör en Access databas till asp-sidor.

Jag har en tabell "tblShow" när jag skapa en ny post i den tabellen vill jag också att det ska skapas tre nya poster i "tblShowBild" med idet från den nya posten i "tablShow".

tblShowBild
---------------
bId // id-nummer
fId // id från tblShow
fldBild // bildens namn

Skulle kunna lägga in att alla bildernaa namn är "transparant.gif".

Nu har jag inte så bra koll på SQL så jag fattar inte hur jag ska lösa allt detta. Har bara löst så jag skapar den dörsta posten i "tblShow".

skapa en ny post i tblShow

objConnect.Execute("INSERT INTO tblShow (fldShow, fldSpelDatum, fldAv, fldRegi, fldSpelPeriod, fldspelPeriodIngress, fldEntre, fldMask, fldKostym, fldScenLjus, fldLjus, fldMusik, fldMusiker, fldEnsemble, fldOvrigt, fldIngress, fldText, fldProduktionUppgifter, fldBakgrund, fldRecensioner, fldBild, fldFoto) VALUES ('"& Trim(Request.Form("fldShow")) &"', '"& Trim(Request.Form("fldSpelDatum")) &"', '"& Trim(Request.Form("fldAv")) &"', '"& Trim(Request.Form("fldRegi")) &"', '"& Trim(Request.Form("fldSpelPeriod")) &"', '"& Trim(Request.Form("fldspelPeriodIngress")) &"', '"& Trim(Request.Form("fldEntre")) &"', '"& Trim(Request.Form("fldMask")) &"', '"& Trim(Request.Form("fldKostym")) &"', '"& Trim(Request.Form("fldScenLjus")) &"', '"& Trim(Request.Form("fldLjus")) &"', '"& Trim(Request.Form("fldMusik")) &"', '"& Trim(Request.Form("fldMusiker")) &"', '"& Trim(Request.Form("fldEnsemble")) &"', '"& Trim(Request.Form("fldOvrigt")) &"', '"& Trim(Request.Form("fldIngress")) &"', '"& Trim(Request.Form("fldText")) &"', '"& Trim(Request.Form("fldProduktionUppgifter")) &"', '"& Trim(Request.Form("fldBakgrund")) &"', '"& Trim(Request.Form("fldRecensioner")) &"', '"& Trim(Request.Form("fldBild")) &"', '"& Trim(Request.Form("fldFoto")) &"');")

Är det någon som har tips eller kan hjälpa mig med detta problem?

Medlem sedan dec. 200012 464 inlägg
#2

Du får göra ett execute-anrop för varje insert. Lägg alltsammans inom en transaktion.

Medlem sedan nov. 2003196 inlägg
#3

LarsG skrev:

Du får göra ett execute-anrop för varje insert. Lägg alltsammans inom en transaktion.

Är det något i denna stil du menar

objConnect.Open(ConnString)
objConnect.Execute("INSERT INTO tblShow (fldShow, OSV) VALUES ('"& Trim(Request.Form("fldShow")) &"', OSV );")
bjConnect.Execute("INSERT INTO tblShowBild (fId, OSV) VALUES ('"& ??? &"', OSV );")
bjConnect.Execute("INSERT INTO tblShowBild (fId, OSV) VALUES ('"& ??? &"', OSV );")
bjConnect.Execute("INSERT INTO tblShowBild (fId, OSV) VALUES ('"& ??? &"', OSV );")
Response.Write "Informationen l&auml;ggs till i databsen!<br />"
objConnect.Close
Set objConnect	= Nothing

Hur får jag tag i det id från posten som skapades i tblShow?
LAST_INSERT_ID()?
tblShow.fId = top 1?

Är inte så haj på SQL som kanske syns så lite mer tips skulle behövas

Medlem sedan dec. 200012 464 inlägg
#4

I access så kan man få tag på räknarvärdet med

select @@identity

direkt efter insert.

Medlem sedan sep. 20005 700 inlägg
#5

Flikar in med en enkel fråga, går det att få fram räknarvärdet i mySQL på ett smidigt sätt?
red/ kanske kunde kollat efter lite själv. Såg att det fanns en funktion mysq_insert_id() i php :)

Medlem sedan nov. 2003196 inlägg
#6

LarsG skrev:

I access så kan man få tag på räknarvärdet med

select @@identity

direkt efter insert.

Tack för tipset, det funka allt efter en stund när jag fatta hur man skulle använda sig av SELECT @@identity

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)