您好我想设计一个列不可更新的查询,但其余的都是。
我该怎么做?
此致
答案 0 :(得分:2)
好吧,我认为您需要在视图上使用INSTEAD OF触发器,以便不直接更新基表。
这是一篇解释它们的文章。 Article
另一个例子。示例代码如下所示。 Article2
<强>示例强> (当然,您需要修改它以适合您的观点。)
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)只是不要更新该列
然后你应该被设置。
答案 1 :(得分:2)
我知道这是一个老问题,但我跑过去搜索档案并且(我认为)有更好的解决方案。原始海报可能不关心这一点,但它可能有助于其他人研究同样的问题。
如果您在视图中定义要作为某些操作的结果而变为只读的字段,则它将自动无法更新,这比创建和维护触发器要简单得多。
在我的情况下,我有一个连接到一个辅助表,我想要显示连接字段,但不要让任何人改变它,因为它会改变所有连接的记录,而不仅仅是正在编辑的记录。该字段是一个简单的文本,名为Pristup。我所做的只是将视图中的字段定义为:
LTrim(Pristup)Pristup
这保持相同的名称,但无论权限如何,都无法更改内容。简单,彻底有效。