Если вы используете sql 2005/2008, вы можете сделать следующее в хранимой процедуре.
update newTable
set readKey='1'
output inserted.id,
inserted.readKey as readKey,
deleted.readKey as prevReadKey
into @tempTable
where id = '1111'
Затем вы можете выбрать из @tempTable, чтобы проверить, если prevReadKey и ReadKey имеют аналогичное значение, если оба имеют аналогичное значение, которое вы можете сбросить настройки последнего изменения DateTime.
Таким образом, вам не нужно запускать несколько запросов в таблице в случае, когда значение действительно изменяется. Но да, в случае, когда значение не меняется, это приведет к увольнению двух операторов обновления, где нет необходимости. Это должно быть хорошо, если эти случаи встречаются редко.
P.S. ПРИМЕЧАНИЕ. - Указанный запрос может быть синтаксически неправильным, поскольку он не проверен. Но именно так может быть решена ваша проблема. Я сделал это следующим образом, используя предложение OUTPUT с оператором Merge в одном из моих проектов, и это также можно сделать с помощью инструкции обновления. Вот reference of OUTPUT Clause
Не могли бы вы предоставить некоторые сведения о том, какой язык/фреймворк вы используете? Например, я думаю, что mysql_query в PHP возвращает количество строк, обновленных в операциях обновления. – kyle
Я использую C#/T-sql /Asp.Net –