【问题标题】:Syntax for AUTOINCREMENT column for MS Access and ODBCMS Access 和 ODBC 的 AUTOINCREMENT 列的语法
【发布时间】:2021-08-19 19:34:25
【问题描述】:

在 C# 中将 ODBC JET 4.0 驱动程序与较旧的(Access 2003 或更早版本)MS Access 数据库一起使用。以下工作:

CREATE TABLE [FunkyTable] (FunkyCol INTEGER);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER PRIMARY KEY);

但以下所有操作都失败并出现错误

ERROR [42000] [Microsoft][ODBC Microsoft Access Driver] CREATE TABLE 语句中的语法错误

CREATE TABLE [FunkyTable] (FunkyCol INTEGER AUTOINCREMENT);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER AUTOINCREMENT(1,1) PRIMARY KEY);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER AUTO_INCREMENT);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER AUTO_INCREMENT(1,1) PRIMARY KEY);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER IDENTITY);
CREATE TABLE [FunkyTable] (FunkyCol INTEGER IDENTITY(1,1) PRIMARY KEY);

正确的语法是什么?

【问题讨论】:

    标签: sql ms-access odbc


    【解决方案1】:

    AUTOINCREMENT是基于Long Integer的字段类型,所以INTEGER AUTOINCREMENT相当于要求2个字段类型。但是,Access 仅允许您为每个字段指定一种类型。

    包括PRIMARY KEY,这样该字段将作为正确的 Access 自动编号运行。 (没有PRIMARY KEY,该表将接受重复的FunkyCol 值。)

    CREATE TABLE [FunkyTable] (FunkyCol AUTOINCREMENT PRIMARY KEY);
    

    【讨论】:

    • 谢谢!结合@PeterG 的答案,我的测试表明COUNTERAUTOINCREMENT 都以相同的方式运行(有或没有PRIMARY KEY)。添加PRIMARY KEY 是有意义的。
    • 是的,COUNTERAUTOINCREMENT 是同义词;两者都一样。
    • Access 和 ODBC JET 驱动程序是否支持非标准增量?我已经尝试了AUTOINCREMENT(5,10)COUNTER(5,10),我认为它们应该“从 5 开始,以 10 为步长自动递增”。但两者都导致“这种类型的对象不支持操作”。语法错误。 AUTOINCREMENTAUTOINCREMENT(1,1) 都可以工作。
    • 我已经使用 ADO/OleDb 设置了种子和增量值,但不确定 ODBC。我最好的猜测是你不能用 ODBC 做到这一点。这与艾伦布朗所说的一致:The initial seed value and increment value are optional, and can be used only with ADO.
    • 是的,使用 ODBC 驱动程序AUTOINCREMENTAUTOINCREMENT(1,1) 可以工作,但AUTOINCREMENT(5,10) 不行。我认为您的评论不一定是错误的!如果 Allen Browne 的评论是正确的,那么在内部,前两个可能是同义词……而后者是“语法错误”。打算尝试使用 OleDB,看看会发生什么。
    【解决方案2】:

    我想这就是你要找的:

    CREATE TABLE [FunkyTable] (FunkyCol COUNTER);
    

    在此 MS 文档的底部示例中找到详细信息:https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/create-table-statement-microsoft-access-sql

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2014-10-15
      • 1970-01-01
      相关资源
      最近更新 更多