Обновление 1 или всех столбцов в записи практически невозможно. Затраты на ведение журнала, блокировку и управление грязной страницей данных - и страница данных обычно содержит несколько записей.
Если я предполагаю, что ни одно из значений не обновляется до NULL
, то вы может создать таблицу обновлений, которая имеет:
- первичный ключ обновляемой таблицы.
- не-
NULL
новые значения в столбцах, значения которых меняются. NULL
значения для столбцов, которые не изменяются.
Затем обновление выглядит следующим образом:
update original o join
updates u
on o.pk = u.pk
set o.col1 = coalesce(u.col1, o.col1),
o.col2 = coalesce(u.col2, o.col2),
. . . ;
Не требуется предложение where
, поскольку предположительно каждая строка в таблице updates
будет хотя бы одно не NULL
значение.