2015-08-26 46 views
0

爲什麼我在關鍵字'read'附近得到錯誤的語法錯誤?關鍵字'read'附近的語法錯誤

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

錯誤:

Msg 156, Level 15, State 1, Procedure viewJab, Line 5
Incorrect syntax near the keyword 'read'.

+0

,因爲這是不允許的:https://msdn.microsoft.com/en-us/library/ms187956.aspx如果你想創建一個只讀視圖,也有做的多種方法那。 Google是你的朋友。 http://stackoverflow.com/questions/7805760/creating-readonly-views-in-sql-server –

+0

這篇文章可能也是你感興趣的:[在SQL Server中創建只讀視圖](http:// stackoverflow .com/questions/7805760/created-readonly-views-in-sql-server) - 對不起,我只注意到David Brabant已經提到過這篇文章。 ;-) – cars10m

回答

0
create view viewJab 
with SCHEMABINDING 
as select kojab,nmjabatan 
from dbo.jabatan 

DENY UPDATE ON dbo.viewjab TO username 
+0

你可以多加一些信息,說明爲什麼這樣可以解決問題嗎? – Trisha

+0

好問題!實際上,'With schemabinding'子句可以防止底層表(在這種情況下爲jabatan)以這種方式被改變,因爲這會影響視圖!這是另一回事,並沒有真正回答這個問題。同樣在例如我在上面給出了該視圖從中選擇的表格,需要將它的模式(即dbo)合併爲dbo.jabatan。我編輯了示例以顯示此內容,並添加了「只讀」的「權限方式」,只要您知道要拒絕更新功能的所有人的用戶名即可。 – russ

+0

@russ你應該編輯你的答案,而不是張貼必要的部分作爲評論。 – Wtower

0

使用INSTEAD OF觸發:

CREATE VIEW:

create view viewJab as 
select kojab,nmjabatan 
from jabatan; 

TRIGGER:

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 
相關問題