代码之家  ›  专栏  ›  技术社区  ›  DaveParillo

Microsoft Access 2003是否包含集合或多集合?

  •  2
  • DaveParillo  · 技术社区  · 16 年前

    我试图确认或拒绝您是否可以在MS Access 2003中将表列定义为集合。似乎是这样 在Office2007中实现-您可以定义一个列,以便在查询/查找中具有“多选列表”,但据我所知,此功能对于新的Access2007文件格式似乎是唯一的。

    换句话说,MS Access 2003是否与SQL语句等效:

    CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET); 
    

    或者是否有一个巧妙的解决方案来实现类似的目标?我接受一个答案,提供有关Access2003中任何集合构造函数的信息。

    1 回复  |  直到 9 年前
        1
  •  4
  •   onedaywhen    16 年前

    您指的是Access数据库引擎的 multivalued data types ?如果是,那么是的,这些是新的ACE(2007)版本的引擎,在作为Access2003版本的引擎的Jet4.0中不可用。

    fwiw我在access2007中尝试了使用ansi-92查询模式(ole db,engine type=5)的SQL,但无法识别multiset关键字。

    注意,您可能不需要也不需要多值类型。一个特别的批评是,AccessDatabaseSQLDML表达式服务没有被修改为考虑多值类型。另外,请参阅本文 Multivalued datatypes considered harmful :

    两个Suraj[Poozhiyil,MS访问 项目经理]我同意 全心全意的开发人员 需要使用多值字段。 了解数据库的人 已经有了一个很好的方法 实现多对多 关系不会得到任何好处 来自多值字段。

    所以,我明确的建议 开发人员不能使用多值 领域。他们没有什么可以提供给我们的 除了潜在的疼痛。

    更新:

    MULTISET 是正式的新数据类型 从SQL:2003开始,所以我 猜测添加的部分原因 它在2007年将全面 符合SQL标准

    这几乎很有趣。访问团队对添加符合任何SQL标准的SQL语法没有兴趣。

    [当SQL Server团队为其4.0版本修改Jet时,他们希望获得SQL-92遵从性,但Windows团队阻止了他们这样做,因为Windows团队的组件依赖于一些仍然不符合的功能…但那是另一个故事。访问团队拥有自己的代码库私有成员,因此他们没有这样的借口…除非SharePoint团队现在有不当影响?我离题了……

    请考虑文档中关于SQL2003标准的以下引用:

    A值 MULTISET 类型可以是 通过枚举 单个元件或通过供应 元素通过查询 表达式;例如,

    MULTISET[1, 2, 3, 4]

    MULTISET( SELECT grades FROM courses )

    …相反,多集值可以是 在中用作表引用 FROM 子句使用 UNNEST 操作员。

    访问团队没有向ace sql dml语法中添加任何新表达式或任何运算符。所以,不,这与SQL标准无关,与SharePoint无关。

    大卫·W·芬顿:不,[支持 多值类型]已添加到 accdb格式(不是ace,as @有一天当他说…)

    考虑引用自 the Access Team's own blog :

    我们添加到新的 访问引擎支持__复杂 数据来源:

    这绝对是发动机的一个特点!

    推荐文章