Sql server 关键字';阅读';

Sql server 关键字';阅读';,sql-server,Sql Server,为什么在关键字“read”附近出现不正确的语法错误 create view viewJab as select kojab,nmjabatan from jabatan with read only; 错误: Msg 156,15级,状态1,程序视图JAB,第5行 关键字“read”附近的语法不正确 使用而不是触发器: 创建视图: create view viewJab as select kojab,nmjabatan from jabatan; CREATE

为什么在关键字“read”附近出现不正确的语法错误

create view viewJab
as 
    select kojab,nmjabatan
    from jabatan
    with read only;
错误:

Msg 156,15级,状态1,程序视图JAB,第5行
关键字“read”附近的语法不正确


使用
而不是
触发器:

创建视图:

create view viewJab as 
select kojab,nmjabatan
from jabatan;
CREATE TRIGGER dbo.ViewJab_Trigger_OnInsertOrUpdateOrDelete]
ON dbo.viewJab
INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
        RAISERROR ('You are not allow to update this view!', 16, 1)     
END
触发器:

create view viewJab as 
select kojab,nmjabatan
from jabatan;
CREATE TRIGGER dbo.ViewJab_Trigger_OnInsertOrUpdateOrDelete]
ON dbo.viewJab
INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
        RAISERROR ('You are not allow to update this view!', 16, 1)     
END

因为这是不允许的:如果你想创建一个只读视图,有多种方法。谷歌是你的朋友。这篇文章可能也会引起你的兴趣:-抱歉,只是刚刚注意到David Brabant已经提到了这篇文章你能补充一点关于为什么这会解决问题的更多信息吗?好问题!事实上,'With schemabinding'子句可以防止底层表(在本例中是jabatan)被修改,因为这样会影响视图!这是另一种方式,根本不能回答问题。同样在我上面给出的示例中,视图从中选择的表需要合并其模式(即dbo),该模式将作为dbo.jabatan输入。我编辑了这个示例来说明这一点,并添加了一种“权限方式”,只要您知道要拒绝更新功能的每个人的用户名,就可以实现只读。@RUS您应该编辑您的答案,而不是将重要部分作为注释发布。