navidshaikh0702 Ответов: 2

Существуют ли какие-либо механизмы блокировки объекта table в SQL developer?


В моей многопользовательской базе данных операторы в нескольких одновременных транзакциях могут обновлять одни и те же данные в таблице. Я должен ограничить доступ к данным до тех пор, пока одна транзакция не будет завершена

Что я уже пробовал:

Я слышал о параллелизме данных и согласованности, но не мог понять

pradiprenushe

Читайте о транзакциях и уровне изоляции.

navidshaikh0702

Ценю ваше решение!!!

2 Ответов

Рейтинг:
1

Richard Deeming

Это крайне редко, когда вам нужно будет сделать это, но есть по крайней мере несколько вариантов.

1) блокировка всей таблицы с TABLOCKX:

Если вы находитесь в транзакции и захватываете эксклюзивную блокировку на столе, например:
SELECT 1 FROM TABLE WITH (TABLOCKX)
Никакие другие процессы не смогут захватить какие-либо блокировки на таблице, а это означает, что все запросы, пытающиеся связаться с таблицей, будут заблокированы до тех пор, пока транзакция не будет зафиксирована.

2) Используйте ручные блокировки приложений:
sp_getapplock (Transact-SQL) | Microsoft Docs[^]
sp_releaseapplock (Transact-SQL) | Microsoft Docs[^]


Рейтинг:
1

Lokesh Zende

Этот С помощью примера (NOLOCK) [^] должно дать вам представление о том, как идти на блокировку столов.