Po pierwsze, operacje trwające długo i blokujące tabele lub jej część można uznać za serwisowe i należy je wykonywać w czasie nieużywania aplikacji lub gdy jest małe wykorzystanie bazy danych, nie wiem, np. 5 rano.
W sytuacji gdy dane są blokowane na krótko, np. w czasie normalnego używania programu nie jest to aż tak wielkim problemem bo po to jest timeout który potrafi chwilę poczekać na dostęp do danych.
Jeśli już naprawdę musisz "synchronizować" dane między tabelami czy tam bazami w szczycie używania bo chyba po to te polecenie to albo rób to partami albo np. użyj mocniejszej technologii bazy danych jeśli to możliwe (oracle, microsoft) i zainteresuj się replikacjami.
W każdym razie w niedużych zastosowaniach problem blokowania rekordów jest pomijalny, przy dużych systemach jest to poważny problem ale są do tego mechanizmy w zaawansowanych silnikach oraz reguły których trzeba się trzymać. Jednakże to jest poważna wiedza i raczej na żadnym forum jej nie poznasz.
Oznaczenie rekordu jako zablokowanego jest ok ale wg mnie tylko do potrzeb informacyjnych, w stylu nie poprawiaj tego dokumentu bo używa go ta czy tamta osoba.
Takie oznaczenia najczęściej kończą się tym że później znacznik ten nie jest zdejmowany z rekordu bo coś tam się nie zakończyło i zaczynają się problemy. Trzeba to czyścić itp.
Poza tym operacje update nie są bardzo szybkie, jak będziesz co chwilę oznaczał rekord jako zablokowany i po chwili zdejmował tą informację z rekordu to wg. mnie wydłużysz operację minimum dwukrotnie.
Jeśli już koniecznie chcesz tak zrobić to:
- na starcie pobierz nazwę stanowiska albo IP komputera,
- każdy start wątku oznacz czasem z funkcji GetTickCount (nigdy nie będzie taka sama wartość).
To cię zabezpieczy przed takimi samymi danymi na różnych komputerach a nawet na tym samym.
BTW wołaj @wloochacz bo chyba nie ma na tym forum lepszego z baz danych