У меня есть приложение на C #, которым одновременно пользуются около десятка сотрудников. Он просто выбирает верхнюю запись из таблицы SQL Server 2005, удаляет ее, а затем отображает данные в форме.
Как только запись выбрана, ее необходимо удалить, чтобы 2 чел не захватывали и не работали с одной и той же записью.
Довольно прямолинейный ход ...
Некоторое время назад я нашел предложение (не могу найти сайт, с которого я его получил, извините) сделать SELECT и DELETE в одном выражении и выполнить SqlCommand.ExecuteReader () с этим "соединением" "заявление:
SELECT TOP 1 *
FROM Call_Table
WHERE Call_Table.hold_call_till <= GetDate()
ORDER BY Call_Table.attempts ASC, Call_Table.custno ASC;
DELETE
FROM Call_Table
WHERE Call_Table.custno = (SELECT TOP 1 Call_Table.custno
FROM Call_Table
WHERE Call_Table.hold_call_till <= GetDate()
ORDER BY Call_Table.attempts ASC, Call_Table.custno ASC);
Пока все работает хорошо, но я чувствую, что мне просто повезло. Мы нанимаем около 5 новых сотрудников, и я хотел бы быть полностью уверен, что это будет работать.
Мне интересно услышать мнение более опытных ветеринаров в этой области.
Должен ли я придерживаться подхода "Если он не сломан, не исправить"? Или я должен активизировать свою игру и использовать какой-нибудь record_locks или сохраненные процы ??
Любые предложения будут приниматься открыто. Я могу предоставить больше информации о таблице или приложении C # при необходимости.