Cytat(Amarel @ 30.03.2009, 20:30:38 )

Przypuscmy, ze mam skrypt, ktory wykonuje dana operacje w bazie danych, a po tym zapisuje sobie gdzies, ze juz to zrobil i za drugim wykonaniem juz nie bedzie wykonywal tej operacji.
Rozumiem, że robisz coś takiego?
1) BEGIN
2) SELECT * FROM wykonane_operacje WHERE operacja = ?
3) wykonanie operacji, jakieś zapisy do różnych tabel itp
4) INSERT (operacja, ..., ...) VALUES (1, ?, ?) INTO wykonane_operacje
5) COMMIT
Rozwiązania:
1) W tabeli, w której zapisujesz tę informacje (wykonane_opeacje) załóż unique na kolumnę (lub kolumny) które identyfikują (w tym przypadku kolumna operacja) to, że dana operacja została już zrobiona. W ten sposób baza danych nie dopuści do zapisania drugi raz tej samej operacji (przy próbie inserta).
2) Zakładanie locka na tabelę wykonane_operacje - między punktem 1 i 2. W ten sposób SELECT z innego skryptu będzie mógł być dopiero wykonany w momencie zwolniania locka (czyli punkt 5). Może spowodować niestety spowolnienie działania całego systemu z powodu oczekiwania na zwalnianie locków!
P.S Nie znam Mysql, ale myślę że takie rzeczy tam są.