SQL Server: вместо обновления триггера при просмотре;выберите все столбцы, кроме определенного, и обновите запись базовой таблицы - PullRequest
0 голосов
/ 10 октября 2018

У меня есть представление, в котором есть realField1, RealField2, Realfield3 и многие другие реальные поля, а также вычисляемый столбец с именем isHighestVersion.

(realField означает реальный столбец в таблице SQL Server, имена столбцов для краткости переименованы).

Представление основано на многотабличном запросе (на самом деле он должен ссылаться несколько раз на одну и ту же базовую таблицу, но SQL Server обрабатывает их как несколько разных таблиц) и имеет один вычисленный логический столбец с именем isHighestVersion,Это представление не разрешает непосредственное обновление и выдает следующее сообщение об ошибке при попытке:

Не удалось обновить или вставить представление или функцию 'xyz', поскольку оно содержит производное или постоянное поле.

Поскольку у меня будет много таких представлений, а поля базовых таблиц и представлений могут изменяться во время разработки, я хочу иметь «общий» код SQL внутри триггеров, который вытаскивает все столбцы (кроместолбец isHighestVersion) из "вставленной" таблицы, а затем выполняет обновление правильной записи в одной реальной базовой таблице - конечно, без несуществующего столбца ishighestversion.

Как это сделатьчто?

1 Ответ

0 голосов
/ 10 октября 2018

Это просто ... ты не можешь.Здесь нет работы.Это нарушает ограничения обновляемого представления.Это четко указано как таковое в документации .

A.Столбец не может быть вычислен из выражения, которое использует другие столбцы.

...