查看只读列

时间:2009-01-28 07:04:53

标签: sql-server

您好我想设计一个列不可更新的查询,但其余的都是。

我该怎么做?

此致

2 个答案:

答案 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

这保持相同的名称,但无论权限如何,都无法更改内容。简单,彻底有效。