webForumDet fria alternativet

MySQL och Rollback

4 svar · 381 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej,

Har suttit och funderat en del om vad man ska göra när en sql-fråga går fel och om man redan har gjort ändringar i en annan fråga som direkt påverkar denna.

T.ex. vi har en användare som ska tas bort. Varje användare har ett fält i två olika tabeller. En tabell med användaren och en annan med användarens uppgifter. Om vi börjar med att ta bort användaren och sedan går vidare till att ta bort användarens uppgifter och att något går fel där.

Hur gör man då? Skapar en transaktion? och hur är stödet för det i MySQL 5? :)

Kollade en del på php.net och i dokumentationen till MySQL och hittade något om en sql-fråga, "ROLLBACK;". Men vet inte hur jag ska tillämpa den och om jag ska det eller ej. Verkar höra ihop med transaktioner. :q

intesaMedlem sedan apr. 2006190 inlägg
#2

Det lättaste skulle ju vara om php stödjer transactions. I sånt fall kommer php att sköta sql-frågorna åt dig. I annat fall så kanske detta kan vara nått att läsa in sig på:
http://dev.mysql.com/doc/refman/5.0/en/xa.html

mozillaMedlem sedan juli 20011 084 inlägg
#3

Jo det skall nog gå bra (även i 4.1), men om jag uppfattat det rätt så stöds endast transactions på innoDB-tabeller. Enklast är kanske att lägga in allt i en stored procedure och sedan anropa den. Den här sidan bör kunna vara till hjälp: http://dev.mysql.com/doc/refman/5.0/en/commit.html

emissionMedlem sedan dec. 19996 721 inlägg
QimenMedlem sedan juni 20015 009 inlägg
#5

Som jag misstänkte då, dags att börja använda transaktioner (en helt ny bit för mig). Men då till en andra fråga angående detta. Jag måste använda InnoDB och det ska inte vara några problem att byta rakt över från MyISAM. Men ska jag byta på alla tabeller eller bara de som kommer beröras av transaktionerna? :)

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)