cluelessentity Ответов: 1

Как сделать триггер в SQL для запуска события в C# dot net?


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

Следующее мое требование:
1) открывайте окно сообщений всякий раз, когда происходит изменение стоимости в таблице, называемой запасом.
2) простыми словами, если я выполняю следующий запрос в MS SQL:

обновить stocktable set stockcount = 4, где StockID = 1111

Затем мое приложение должно распознать, что есть изменение значения, поэтому оно должно дать мне всплывающее окно в MessageBox в моем приложении.

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

Я смог добиться этого, проверяя количество запасов каждую секунду с помощью таймера.
Но это неосуществимо с точки зрения производительности. Потому что если, скажем, есть 500 пользователей, то на всех 500 компьютерах будет 500(человек) * 12(часов) * 60(минут) * 60(минут) в день.
Следовательно, другой способ, который я мог бы придумать, - это вызвать функцию для отображения MessageBox только тогда, когда есть изменение, а не проверять изменение из приложения каждую секунду.
Пожалуйста помочь. Я пишу этот код в Visual Studio с использованием C#. Бэкэнд - это MSSQL.

CHill60

До SQL Server 2008 (?) существовала вещь под названием Notification Services, которая, как я полагаю, была заменена StreamInsight-см. StreamInsight для непрограммистов - статьи TechNet - США (английский) - TechNet Wiki[^]
В любом случае вам придется реализовать шаблон наблюдателя-см. Изучение шаблона проектирования наблюдатель [^]
Возможно, вы захотите рассмотреть возможность выполнения фактического наблюдения в другом потоке

1 Ответов

Рейтинг:
2

cluelessentity

Ответ на эту проблему-зависимость от SQL.
Использовать эту ссылку:
Обнаружение изменений с помощью SqlDependency[^]