Обновление не удалось, поскольку оно содержит производное или постоянное поле - PullRequest
0 голосов
/ 08 июня 2018

Есть мое представление из SQL Server Management Studio, по умолчанию для столбца Pocket установлено значение 0

SELECT ToolAssembly.ID, CAST(0 AS int) AS Pocket FROM dbo.ToolAssembly

И когда я пытаюсь обновить представление в MMSD с помощью кода:

SqlCommand command = new SqlCommand("UPDATE [mmlTooling].[dbo].vHHPocket SET Pocket = @pid Where ID = @tid", sqlCon);

command.Parameters.AddWithValue("@pid", pid);
command.Parameters.AddWithValue("@tid", tid);
command.ExecuteNonQuery();

Затем появилось сообщение об ошибке:

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

Какие могут быть причины этой проблемы и как ее устранить?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Представления SQL Server обновляются только при определенных условиях.Пожалуйста, посмотрите на эту ссылку

Проверьте наличие раздела "Обновляемые просмотры" в ссылке.

Обновление не работает, потому что ваше представление не работаетВыполните эти условия / ограничения.

0 голосов
/ 08 июня 2018

CAST(0 AS int) AS Pocket - «производное или постоянное поле».Если Pocket является константой 0, и вы указываете ей обновить это значение, где вы ожидаете, что база данных запишет это значение?

Просто обновите dbo.ToolAssembly вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...