Чтобы сделать работу надежно, вам нужно написать приличную часть синтаксического анализатора для SQL (или TSQL). И это нетривиальное упражнение!
Вы не учли все правовые варианты утверждений UPDATE. Например, вы можете получить:
UPDATE Sometable
SET (Col1, Col2, Col3) = ((SELECT Value1, Value2, Value3 FROM ... WHERE ...)),
Col4 = (SELECT Value4 FROM ... WHERE ...)
WHERE ...;
И это еще до того, как вы примете во внимание такие операции, как присоединение обновлений.
Любое простоватое решение, которое не обрабатывает такие запросы, может привести к недовольству опытных пользователей или хакеров, которые понимают, что вы анализируете, и хотят обойти ваш код обнаружения. Не забывайте, что я мог бы поместить комментарий - или даже несколько комментариев - между любыми токенами в выражении UPDATE. Они могут или не могут попасть в журнал аудита - но, возможно, есть подсказки, похожие на комментарии, и т. Д.