【问题标题】:Syntax error in create table statement - Access 2010创建表语句中的语法错误 - Access 2010
【发布时间】:2015-03-04 16:06:33
【问题描述】:
Create table Customers 
(
customerid              number(10) PRIMARY KEY; 
First_name              varchar2(100); 
last_name               varchar2(100); 
house_number            number(10); 
street                  number(10);  
postcode                number(5); 
home_phone_number       number(10);  
mobile_phone_number     number(10);  
email_address           varchar2(100); 
DOB                     date
);

【问题讨论】:

  • 错误是什么?哪个数据库管理系统?我们无法猜测您的想法
  • 抱歉,我使用的是 access 2010,错误是“创建表语句中的语法错误。谢谢

标签: sql ms-access ms-access-2010 ddl


【解决方案1】:

您的 DDL 语句(带有 @Mureinik 建议的字段类型替换)在 Access 2010 中有效,但前提是您从 ADO 执行它:

Create table Customers (
    customerid              numeric(10) PRIMARY KEY,
    First_name              varchar(100),
    last_name               varchar(100), 
    house_number            numeric(10),
    street                  numeric(10),  
    postcode                numeric(5),
    home_phone_number       numeric(10),
    mobile_phone_number     numeric(10),  
    email_address           varchar(100),
    DOB                     datetime
    ); 

我将语句加载到一个字符串变量strCreate中,并像这样执行它...

CurrentProject.Connection.Execute strCreate

CurrentProject.Connection 是一个 ADO 对象。

该语句在通过 DAO 执行时会引发语法错误...

CurrentDb.Execute strCreate  ' <-- "Syntax error"

如果您正在执行来自 Access 查询设计器的语句,该语句也使用 DAO,并且该语句将失败。

虽然语句从 ADO 成功执行,但我不确定这些 Numeric() 字段的结果数据类型是否是您真正想要的。我不习惯看到 Decimal 字段类型用于主键。更多时候,人们选择AutoNumber,它是基于Long Integer。 (但我并不是说Decimal 是一个糟糕的选择,如果那是你真正想要的。)

【讨论】:

    【解决方案2】:

    在每个列定义之后,您应该有一个逗号 (,),而不是分号 (;)。 此外,这个脚本看起来好像是从 Oracle 借来的。在access中,varchar2numberdate对应的类型分别为varcharnumericdatetime

    Create table Customers 
    (
    customerid              numeric(10) PRIMARY KEY,
    First_name              varchar(100),
    last_name               varchar(100), 
    house_number            numeric(10),
    street                  numeric(10),  
    postcode                numeric(5),
    home_phone_number       numeric(10),
    mobile_phone_number     numeric(10),  
    email_address           varchar(100),
    DOB                     datetime
    );
    

    【讨论】:

    • 感谢您的帮助,但仍然出现相同的错误:/
    • @Harry 刚刚注意到您的类型已关闭,请查看编辑后的答案
    • 不确定访问它可能只有日期时间
    • @Mihai 你是对的,我错过了那个。相应地编辑了我的答案。谢谢!
    • 嗯,感谢您的帮助,但奇怪的是它仍然出现相同的错误! :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多