Как убрать блокировку строчки в бд?
Использую Sql-server столкнулся с проблемой блокировок записи. Есть 2 таблицы: MainTable и SubTable. У MainTable стоит триггер, что приобновлении записи в MainTable обновляется и некоторая строчка в SubTable. И есть некоторый запрос который который обновляет только строчки только в SubTable.
Есть 2 кейса:
- Когда происходит одновременно запросы, хотелось бы получить. Чтобы данные с триггера сохранились, а обновление от запроса, было либо потерено, либо подождало, но не блокировалось.
- Получение данных (select * from SubTable) не получить данные, если в данный момент с ними идет работа
По второму варианту как я понял, запрос должен выглядеть: (select * from SubTable with (UPDLOCK, ROWLOCK, READPAST)) А вот с первым кейсом, не понимаю, как настроить триггер
Так выглядит триггер:
Create trigger Update_MainTable on MainTable after
UPDATE as
begin
Update SubTable with(ROWLOCK) set [LatUpdateTime] = SYSDATETIME()
where SubTable.[ClientTableId] in (select Id from inserted) and [Table] = 'MainTable'
end;