Via een remote MyODBC connection werk ik via een VisualC programmatje een aantal tabellen bij. Daarbij moeten vier queries atomic uitgevoert worden, zodat als de verbinding weg zou vallen dat ze of alle vier wel of alle vier niet worden uitgevoert (de operatie hoeft wat mij betreft op de server zelf niet atomic te zijn, als deze halverwege zou crashen gaat er toch een backup van een uur geleden terug op en zijn de wijzigingen zou wie zo ongedaan gemaakt).
Normaal gesproken zou je hiervoor een transactie starten, de vier queries uitvoeren en aan het eind een commit doen. Nu gaat dat in dit geval niet. Het plaatsen van de queries in een procedure kan volgens mij met mysql ook niet.
Zijn er nog andere mogelijkheden om er toch voor te zorgen dat als de client/connectie tijdens het uitvoeren ervan wordt afgebroken, dat de queries alleen als geheel worden uitgevoerd? De operatie zelf kost niet veel tijd (tabel locken, alle rows verwijderen, de tabel weer vullen met rows uit een andere tabel en de tabel weer unlocken), dus de kans is niet zo heel erg groot - maar ook niet verwaarloosbaar klein.
(mmm. wordt tijd om mysql eens te gaan vervangen door postgres...)
Normaal gesproken zou je hiervoor een transactie starten, de vier queries uitvoeren en aan het eind een commit doen. Nu gaat dat in dit geval niet. Het plaatsen van de queries in een procedure kan volgens mij met mysql ook niet.
Zijn er nog andere mogelijkheden om er toch voor te zorgen dat als de client/connectie tijdens het uitvoeren ervan wordt afgebroken, dat de queries alleen als geheel worden uitgevoerd? De operatie zelf kost niet veel tijd (tabel locken, alle rows verwijderen, de tabel weer vullen met rows uit een andere tabel en de tabel weer unlocken), dus de kans is niet zo heel erg groot - maar ook niet verwaarloosbaar klein.
(mmm. wordt tijd om mysql eens te gaan vervangen door postgres...)
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]