2013-02-26 65 views
4

我的數據庫是一個Access數據項目,綁定到SQL Server 2005後端。我試圖將表單綁定到使用觸發器的視圖。 Access認爲視圖不可更新,所以它使表單只讀;顯然它不考慮觸發器。使用INSTEAD OF觸發器無法更新視圖

我懷疑問題是SQL Server的元數據表示視圖不可更新。查詢INFORMATION_SCHEMA.VIEWS,例如,顯示IS_UPDATABLE = NO。儘管如此,我肯定可以通過使用UPDATE語句或使用SSMS GUI來更新視圖。

是否有人知道我可以用來說服Access的方法,該視圖確實是可更新的?我知道還有其他一些方法可以讀寫這個表單,但我打算使用這個視圖來限制某些用戶訪問特定的數據子集,如果可以的話,它會讓事情變得更容易在這一個視圖中封裝所有這些數據。

+2

僅供參考,'INFORMATION_SCHEMA.VIEWS'會告訴你每一個觀點是不可更新:http://msdn.microsoft.com/en-us /library/ms181381(v=sql.90).aspx – JNK 2013-02-26 21:13:34

+0

@JNK謝謝,我認爲每一個視圖都被標記爲不可更新似乎很奇怪。有沒有更好的方法來檢查查詢是否可更新?任何線索如何確定它? – 2013-02-26 21:16:24

+1

我不是一個訪問專業人士,但它看起來像你可能需要創建一個唯一的索引在您的視圖進行訪問以能夠更新它。 – JNK 2013-02-26 21:17:50

回答

1

訪問需要鏈接表上的PK才能更新 - 我認爲這是JET(或任何新的引擎)引擎可以唯一標識要更改的行。

這意味着你需要這個視圖轉換爲索引視圖,which is a whole other can of potentially very complicated worms.

+0

這很有趣,我實際上已經把所有東西都設置爲使用索引視圖來做到這一點,然後由於更新性能而決定採取這種做法。但如果這是需要的,我會很樂意讓它工作。我現在就試試這個。 – 2013-02-26 21:24:03

+0

對不起,不幸的是這並沒有爲我工作。 – 2013-02-26 21:36:18

+0

那麼它可能是不可能的 - 我相信任何觀點是可更新的,它需要一個PK。訪問可能只是不允許更新視圖引用多個對象 - 我不知道它是否有能力檢查其他系統表,以確保有插入/更新/刪除的替代觸發器。 – JNK 2013-02-26 21:39:41

相關問題