是否可以在 Ms Access View 上添加索引?
我正在尝试运行此查询:
CREATE INDEX MyCustomViewIndex ON [MyView] (MyColumn) WITH DISALLOW NULL
我收到此错误消息。
Cannot execute data definition statements on linked data sources.
有什么建议吗?
问候, 亚历克斯
编辑:
我的 View 定义:
create view MyView as SELECT TableA.Field1, MyUnionQuery.Field2
FROM TableA, MyUnionQuery
MyUnionQuery 定义:
Select * from ViewX
UNION select * from ViewY
所有表都在同一个MDB文件中
最佳答案
与往常一样,Access(ACE、Jet,等等)documentation含糊不清:它谈论“表”,当然 VIEW
是“查看的表”,但我认为在这种情况下它特指“基表”。我强烈怀疑 Access VIEW
不支持索引。
当我尝试使用 SQL DDL 创建一个时,我也收到错误“无法在链接的数据源上执行数据定义语句”。下面是一些用于重现错误的 VBA 代码(在临时文件夹中创建一个新的 .mdb,无需引用,只需粘贴到 VBA 代码模块中,例如在 Excel 中):
Sub NoIndexedViews()
On Error Resume Next
Kill Environ$("temp") & "\DropMe.mdb"
On Error GoTo 0
Dim cat
Set cat = CreateObject("ADOX.Catalog")
With cat
.Create _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & _
Environ$("temp") & "\DropMe.mdb"
With .ActiveConnection
Dim Sql As String
Sql = _
"CREATE TABLE T (col1 INTEGER);"
.Execute Sql
Sql = _
"CREATE VIEW V (col1) AS SELECT col1 FROM T;"
.Execute Sql
On Error Resume Next
Sql = _
"CREATE INDEX idx ON V (col1) WITH DISALLOW NULL"
.Execute Sql
MsgBox Err.Description
End With
Set .ActiveConnection = Nothing
End With
End Sub
我的 .mdb 中没有任何链接的数据源,因此我得出结论,显示的错误是虚假且具有误导性的。但事实是,无法在 Access VIEW
上创建索引。
关于sql - MS Access 索引 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951950/