Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
19.02.2015, 16:49
|
|||
---|---|---|---|
Объясните про select for update |
|||
#18+
Требуется мне проапдейтить записи в таблице (Nhibernate & PostrgreSQL). Делаю запрос и получаю список id (IList<Int64>) записей, которые, возможно, потребуется проапдейтить. Далее в цикле прохожу по коллекции и из этой же таблицы по id получаю всю запись (объект). По другим полям определяю, требуется ли делать update. Если надо - произвожу update, нет - иду дальше. Требуется запретить update, который будет производиться из других экземпляров приложений. При select for update блокировка делается на update записи или и на последующий select и update записи? Где делать select for update (в запросе на получение списка id или в запросе на получение объекта)? Как снимается блокировка? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 18:52
|
|||
---|---|---|---|
Объясните про select for update |
|||
#18+
saxix, в документации сказано что блокировка действует до конца текущей транзакции: http://www.postgresql.org/docs/9.0/static/sql-select.html FOR UPDATE causes the rows retrieved by the SELECT statement to be locked as though for update. This prevents them from being modified or deleted by other transactions until the current transaction ends. That is, other transactions that attempt UPDATE, DELETE, or SELECT FOR UPDATE of these rows will be blocked until the current transaction ends. Also, if an UPDATE, DELETE, or SELECT FOR UPDATE from another transaction has already locked a selected row or rows, SELECT FOR UPDATE will wait for the other transaction to complete, and will then lock and return the updated row (or no row, if the row was deleted). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=17&mobile=1&tid=1349621]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 496ms |
0 / 0 |