Просмотр с колонкой только для чтения - PullRequest
1 голос
/ 28 января 2009

Привет, я хотел бы разработать запрос, в котором столбец не может быть обновлен, но остальные из них да.

Как я могу это сделать?

Привет

Ответы [ 2 ]

2 голосов
/ 16 сентября 2016

Я знаю, что это старый вопрос, но я наткнулся на него в поисках архивов и нашел (думаю) лучшее решение. Оригинальные постеры, вероятно, не заботятся об этом, но это может помочь кому-то еще исследовать ту же проблему.

Если вы определите поле в своем представлении, которое хотите сделать доступным только для чтения в результате какой-либо операции, оно автоматически не будет обновляться, и это будет намного проще, чем создание и обслуживание триггера.

В моем случае у меня было соединение с вспомогательной таблицей, где я хотел показать объединенное поле, но не позволил никому изменить его, так как тогда оно изменилось бы для всех объединенных записей, а не только для редактируемой. Поле представляло собой простой текст с именем Pristup. Все, что я сделал, это определил поле в представлении как:

LTrim (Приступ) Приступ

При этом сохраняется то же имя, но содержимое не может быть изменено независимо от разрешений. Простой и очень эффективный.

2 голосов
/ 28 января 2009

Ну, я думаю, вам нужно использовать триггер INSTEAD OF для представления, чтобы базовая таблица не обновлялась напрямую.

Вот статья, объясняющая их. Статья

Еще один пример. Пример кода показан ниже. 1008 * Статья 2 *

Sample (конечно, вам нужно изменить это, чтобы соответствовать вашему мнению.)

CREATE TRIGGER tr_Employees_U on Employees FOR UPDATE AS
    IF UPDATE(lastname)
    BEGIN
        RAISERROR ('cannot change lastname', 16, 1)
        ROLLBACK TRAN
        RETURN
    END
GO

Используйте триггер для:

1) ошибка при попытке обновить этот столбец

2) просто не обновляйте этот столбец

Тогда вы должны быть установлены.

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