微软是否Access 2003中包含集或多重集?
-
19-09-2019 - |
题
我试图证实或否认是否可以在MS Access 2003中为一组定义的表列。看来这是在Office 2007中实现 - 你可以定义一个列有在查询/查找一个“多选列表”,不过这个功能似乎是唯一的新的访问2007文件格式据我能确定。
措辞的另一种方式,也MS Access 2003中有相当于SQL语句:
CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET);
或者是有一个聪明的解决办法,以实现类似的东西?我会接受一个答案Access 2003中的任何集合构造器提供的信息。
解决方案
您指的是Access数据库引擎的多值数据类型 ?如果是的话,是的,这是新的ACE(2007)发动机的版本,并没有Jet 4.0中可用的是ACCESS2003版的引擎。
FWIW我想你的SQL在Access2007使用ANSI-92查询模式(OLE DB,引擎类型= 5)和MULTISET关键字无法识别。
请注意,你可能不需要也不想要多值类型。一个特别的批评是Access数据库SQL DML表达式服务尚未改变,考虑到多值类型。此外,看到这篇文章认为是有害的多值数据类型:
两者苏拉杰[Poozhiyil中,MS接入 项目经理]我同意 竭诚开发商不 需要使用多值字段。 谁懂数据库的人 已经有了一个很好的方式 实现多对多 关系,将获得任何好处 从多值字段。
所以,我清楚,某些建议 开发商是不使用多值 领域。他们什么都没有给我们提供 除了潜在的疼痛。
更新:
MULTISET 是一个新数据类型正式 与SQL开始:2003,所以我 猜测的部分原因添加 它在2007年的访问是要充分 符合SQL标准
这几乎有趣。访问团队显示,在添加SQL语法不感兴趣,兼容任何SQL标准。
[当SQL Server团队是为它的4.0版本修改喷气他们想获得SQL-92规定,但由Windows团队,其成分为剩余不兼容的某些功能依赖这样做是防止...那是另一个故事。访问团队的代码库的自己的私人民俗所以他们没有这样的借口......除非SharePoint工作组现在有不正当的影响?我离题...]
从关于SQL2003标准文档考虑此引用:
一个
MULTISET
类型的值可以是 通过枚举创建任 单个元件或通过提供 通过查询的元素 表达;如,
MULTISET[1, 2, 3, 4]
或
MULTISET(
SELECT grades
FROM courses
)
...相反地,多重集的值可以是 用作
FROM
表引用 子句使用UNNEST
运算符。
在访问小组还没有添加任何新的表达,也没有任何操作员与ACE SQL DML语法。所以,不,这无关与SQL标准和一切与SharePoint中。
大卫·W·芬顿:没有,[支持 多值类型]是在加入 ACCDB格式(不是ACE,如 @onedaywhen说...)
我们添加到新的主要特征 访问引擎是“复杂的支持 数据”。
这绝对是一个引擎的功能!