Sql server Can';t使用INSTEAD OF触发器更新视图
我的数据库是一个Access数据项目,绑定到SQL Server 2005后端。我试图将表单绑定到使用Sql server Can';t使用INSTEAD OF触发器更新视图,sql-server,ms-access,view,ms-access-2007,adp,Sql Server,Ms Access,View,Ms Access 2007,Adp,我的数据库是一个Access数据项目,绑定到SQL Server 2005后端。我试图将表单绑定到使用而不是触发器的视图。Access认为视图是不可更新的,因此它将表单设置为只读;显然它没有考虑到触发器 我怀疑问题在于SQL Server的元数据表示视图不可更新。查询信息\u架构。例如,视图显示是可更新的=否。尽管如此,我肯定可以使用更新语句或使用SSMS GUI来更新视图 有人知道我可以用什么方法让Access相信这个视图确实是可更新的吗?我知道还有其他方法可以获得此表单的读写访问权限,但我计
而不是触发器的视图。Access认为视图是不可更新的,因此它将表单设置为只读;显然它没有考虑到触发器
我怀疑问题在于SQL Server的元数据表示视图不可更新。查询信息\u架构。例如,视图
显示是可更新的
=否。尽管如此,我肯定可以使用更新
语句或使用SSMS GUI来更新视图
有人知道我可以用什么方法让Access相信这个视图确实是可更新的吗?我知道还有其他方法可以获得此表单的读写访问权限,但我计划使用此视图限制某些用户访问非常特定的数据子集,如果我能将所有这些数据封装在这一个视图中,事情就会变得容易得多。Access需要链接表上的PK才能更新它——我认为这是为了让JET(或任何新的)引擎能够唯一地识别要更改的行
这意味着您需要将此视图转换为索引视图,FYI,INFORMATION\u SCHEMA。视图
将告诉您每个视图都不可更新:@JNK谢谢,我认为每个视图都标记为不可更新似乎很奇怪。有没有更好的方法来检查查询是否可更新?有什么线索Access是如何决定的吗?我不是Access专业人士,但看起来你可能需要在视图上创建一个唯一的索引,Access才能更新它。是的,Access需要PK来进行任何更改。我不熟悉Access数据项目,但熟悉常规的旧链接表系统,当Access无法确定主键时,我似乎还记得它曾经提供了识别唯一列的选项?有趣的是,我实际上已经设置了所有与索引视图相关的选项,然后因为更新的性能而决定不使用它。但如果这就是它所需要的,我会很高兴让它工作。我现在就试试看。那可能是不可能的——我相信任何视图都需要PK才能更新。Access可能只是不允许更新引用多个对象的视图——我不确定它是否有能力检查其他系统表,以确保插入/更新/删除时存在instead of触发器。