У меня есть набор триггеров, которые создают записи в отдельной таблице событий, когда они обновляются или удаляются. Эта таблица содержит идентификатор, имя таблицы и данные, которые были изменены / удалены.
У меня есть многопоточное приложение .NET core 3.0, которое периодически выбирает запись с самым низким идентификатором, обрабатывает отправляемые данныеобработанные данные передаются в API. После этого он удаляет строку из таблицы.
Проблема состоит в том, что одна и та же строка может быть прочитана дважды отдельными процессами, если SELECT завершается процессом 1, а затем процесс 2 завершает SELECT доУДАЛЕНИЕ было завершено процессом 1.
Поскольку таблица событий не имеет «заблокированного» столбца, я надеялся завершить это с какой-то блокировкой строки и WITH (readpast). Однако, поскольку SELECT и DELETE находятся в отдельных транзакциях, я не уверен, подходит ли это.
Любой совет о том, как я мог бы достичь этого, учитывая текущую настройку, или было бы идеальным введение столбца блокировкиспособ