|
![]() |
#1 |
Участник
|
Тьфу. Только сейчас до меня дошло что именно вы пытаетесь реализовать. Блокировка запуска кода несколькими пользователями одновременно. Так?
Нет. Это делается по другому. Например, в той же таблице с логом оставьте одну запись. Эту запись внутри транзакции выбирайте для обновления и перед окончанием транзакции обновляйте. Тогда второй пользователь не сможет сделать тоже самое ровно до тех пор пока первый не освободит эту единственную запись. |
|
![]() |
#2 |
Постигающий
|
Цитата:
Сообщение от S.Kuskov
![]() Тьфу. Только сейчас до меня дошло что именно вы пытаетесь реализовать. Блокировка запуска кода несколькими пользователями одновременно. Так?
Нет. Это делается по другому. Например, в той же таблице с логом оставьте одну запись. Эту запись внутри транзакции выбирайте для обновления и перед окончанием транзакции обновляйте. Тогда второй пользователь не сможет сделать тоже самое ровно до тех пор пока первый не освободит эту единственную запись. ну то есть вася пупкин запустил программу с параметром А, в лог попала строка со значением А. это значит что никто не может запускать программу с параметром А, пока вася пупкин не закончит и не очистит лог. ![]() пока что вижу лишь один выход - перед заполнением лога чистить его. но в связи с нюансами это тяжеловатая процедура будет... Последний раз редактировалось Андрей К.; 22.03.2012 в 13:33. |
|
![]() |
#3 |
Участник
|
Заведите в логе галку "заблокировано". Вместо заполнения и чистки лога снимайте и устанавливайте эту галку (делайте это внутри одной транзакции, как я описывал выше). Перед тем как начать транзакцию проверяйте есть ли в таблице строка с нужным параметром, если нет, то создавайте. На всякий случай задайте на таблице уникальный индекс, чтобы нельзя было создать две строчки с одним и тем же параметром.
|
|
![]() |
#4 |
Постигающий
|
Цитата:
Сообщение от S.Kuskov
![]() Заведите в логе галку "заблокировано". Вместо заполнения и чистки лога снимайте и устанавливайте эту галку (делайте это внутри одной транзакции, как я описывал выше). Перед тем как начать транзакцию проверяйте есть ли в таблице строка с нужным параметром, если нет, то создавайте. На всякий случай задайте на таблице уникальный индекс, чтобы нельзя было создать две строчки с одним и тем же параметром.
|
|
![]() |
#5 |
Участник
|
Цитата:
Как принудительно создать блокировку? |
|
|
|