Sql server 使用只读列查看

Sql server 使用只读列查看,sql-server,Sql Server,嗨,我想设计一个查询,其中一列是不可更新的,但其余的是可以的 我该怎么做 关于嗯,我认为您需要在视图上使用INSTEAD OF触发器,这样就不会直接更新基表 下面是一篇解释它们的文章 另一个例子。示例代码如下所示 样本 (当然,您需要修改此选项以适合您的视图。) 使用触发器执行以下操作之一: 1) 他们试图更新该列时出错 2) 只是不要更新那个专栏 然后您应该被设置。我认为您需要在视图上使用一个INSTEAD OF触发器,这样就不会直接更新基表 下面是一篇解释它们的文章 另一个例子。示例代码如下

嗨,我想设计一个查询,其中一列是不可更新的,但其余的是可以的

我该怎么做


关于

嗯,我认为您需要在视图上使用INSTEAD OF触发器,这样就不会直接更新基表

下面是一篇解释它们的文章

另一个例子。示例代码如下所示

样本 (当然,您需要修改此选项以适合您的视图。)

使用触发器执行以下操作之一:

1) 他们试图更新该列时出错

2) 只是不要更新那个专栏


然后您应该被设置。

我认为您需要在视图上使用一个INSTEAD OF触发器,这样就不会直接更新基表

下面是一篇解释它们的文章

另一个例子。示例代码如下所示

样本 (当然,您需要修改此选项以适合您的视图。)

使用触发器执行以下操作之一:

1) 他们试图更新该列时出错

2) 只是不要更新那个专栏


那你应该准备好了。

我知道这是一个老问题,但我在搜索档案时遇到了它,并且(我认为)有一个更好的解决方案。在这一点上,原创海报可能并不重要,但它可能有助于其他人研究同样的问题

如果您在视图中定义了某个字段,并且希望该字段作为某个操作的结果成为只读字段,则该字段将自动不可更新,这比创建和维护触发器要简单得多

在我的例子中,我有一个到aux表的联接,在这里我想显示联接字段,但不允许任何人更改它,因为它会更改所有联接的记录,而不仅仅是正在编辑的记录。该字段是一个简单的文本,名为Pristup。我所做的只是将视图中的字段定义为:

LTrim(Pristup)Pristup


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

我知道这是一个老问题,但我在搜索档案时遇到了它,并且(我认为)有了更好的解决方案。在这一点上,原创海报可能并不重要,但它可能有助于其他人研究同样的问题

如果您在视图中定义了某个字段,并且希望该字段作为某个操作的结果成为只读字段,则该字段将自动不可更新,这比创建和维护触发器要简单得多

在我的例子中,我有一个到aux表的联接,在这里我想显示联接字段,但不允许任何人更改它,因为它会更改所有联接的记录,而不仅仅是正在编辑的记录。该字段是一个简单的文本,名为Pristup。我所做的只是将视图中的字段定义为:

LTrim(Pristup)Pristup


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

完美,我会使用它。谢谢你,我会用的。感谢这是一个关于StackExchange的好例子。这比扳机好得多。但是,当您尝试更新只读派生字段时,您将收到的错误消息不是最好的,但它是可行的。这比扳机好得多。但是,当您尝试更新只读派生字段时,您将收到的错误消息不是最好的,但它是可以接受的。
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