您指的是 Access 数据库引擎的多值数据类型吗?如果是这样,那么是的,这些对于 ACE (2007) 版本的引擎来说是新的,并且在作为 Access2003 版本的引擎的 Jet 4.0 中不可用。
FWIW 我使用 ANSI-92 查询模式(OLE DB,引擎类型 = 5)在 Access2007 中尝试了您的 SQL,并且无法识别 MULTISET 关键字。
请注意,您可能不需要也不想要多值类型。一个特别的批评是 Access Database SQL DML 表达式服务没有被改变以考虑多值类型。另外,请参阅这篇文章Multivalued datatypes considered dangerous:
Suraj [Poozhiyil,MS Access 项目经理] 和我都完全同意开发人员不需要使用多值字段。了解数据库的人已经有了实现多对多关系的好方法,并且不会从多值字段中受益。
因此,我对开发人员的明确而肯定的建议是不要使用多值字段。除了潜在的痛苦之外,他们没有任何东西可以提供给我们。
更新:
MULTISET是一种正式从 SQL:2003 开始的新数据类型,所以我猜测在 Access 2007 中添加它的部分原因是完全符合 SQL 标准
这几乎很有趣。Access 团队对添加符合任何 SQL 标准的 SQL 语法没有兴趣。
[当 SQL Server 团队为其 4.0 版本修改 Jet 时,他们希望获得 SQL-92 合规性,但被 Windows 团队阻止,其组件依赖于某些不合规的功能......但这是另一回事。访问团队拥有自己的代码库私人人员,因此他们没有这样的借口……除非 SharePoint 团队现在有不当影响?我跑题了……]
考虑一下关于 SQL2003 标准的文档中的这句话:
MULTISET
可以通过枚举单个元素或通过查询表达式提供元素来创建类型的值;例如,
MULTISET[1, 2, 3, 4]
或者
MULTISET(
SELECT grades
FROM courses
)
...相反,多重集值可以用作FROM
使用运算符的子句中的表引用UNNEST
。
访问团队没有向 ACE SQL DML 语法添加任何新表达式或任何运算符。所以,不,这与 SQL 标准无关,与 SharePoint 无关。
David W. Fenton:不,[对多值类型的支持]以 ACCDB 格式添加(不是 ACE,正如@onedaywhen 所说......)
考虑访问团队自己的博客中的这句话:
我们添加到新 Access 引擎的主要功能是支持“复杂数据”。
这绝对是引擎功能!