Если вы пытаетесь решить бизнес-задачи, то для программирования систем Win32 лучше, чем С, есть инструменты. Clarion. Delphi. И другие я не сомневаюсь.
Но я думаю, что для изучения , как все работает , ты в хорошей форме с C.
Единственный способ проверить, изменились ли значения, - это сравнить значения в виртуальных таблицах DELETED и INSERTED в триггере. SQL не проверяет существующее значение перед обновлением до нового, он с радостью напишет новое идентичное значение поверх - другими словами, он принимает ваше слово для обновления и отслеживает обновление, а не фактические изменения.
Единственный способ, который я могу придумать, - это сравнить значения в DELETED и INSERTED, чтобы увидеть, какие столбцы изменились.
Это не кажется особенно элегантным решением. .
Я задал тот же вопрос !
Предыдущие плакаты верны - без прямого сравнения значений нельзя точно сказать, действительно ли данные изменились или нет. Однако есть несколько способов выполнить этот тип проверки, в зависимости от того, что еще вы пытаетесь сделать в триггере. В ответах на мой вопрос есть несколько полезных советов об этих различных механизмах и их компромиссах.
Как уже писали другие, вам нужно будет опросить INSERTED и DELETED. Единственный другой полезный совет может заключаться в том, что вы можете получить только строки с измененными значениями (и отбросить строки, которые не изменились), используя оператор EXCEPT - например:
SELECT * FROM Inserted
EXCEPT
SELECT * FROM Deleted