创建表语法错误 - MS Access,SQL视图

时间:2013-02-19 18:17:07

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

我一直收到CREATE TABLE语法错误,但我没有看到错误!导致错误的原因是什么?

我的SQL:

CREATE TABLE my_employee
(
employee_id INTEGER PRIMARY KEY NOT NULL,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(30) NOT NULL,
address VARCHAR(10) NOT NULL,
birthdate DATE,
salary NUMERIC(8,2) DEFAULT 15000,
marital_status CHAR(1)
);

4 个答案:

答案 0 :(得分:5)

由于您的DDL语句包含DEFAULT,因此您必须使用ADO执行它。我将您的语句加载到字符串变量中并从Access 2007执行它,如下所示:

CurrentProject.Connection.Execute strSql

薪水字段为十进制,精度为8,比例为2,默认为15000.

DEFAULT是Jet 4.0添加的Access SQL功能之一。这些功能不适用于从DAO执行的语句。如果您使用Access'查询设计器来创建和执行语句,那么您正在使用DAO。如果您使用CurrentDb.Execute,则相同。但CurrentProject.Connection是一个ADO对象,因此它可以.Execute Jet 4.0功能。

NOT NULL之后,PRIMARY KEY PRIMARY KEY隐含NOT NULL,因此PRIMARY KEY NOT NULL隐含{{1}}。但是{{1}}不会触发错误。只要您从ADO执行它,该语句就像您最初编写它一样。

答案 1 :(得分:1)

我和Access 2007女士有同样的问题,但我稍后解决了。
这是因为实际上由于安全原因,默认情况下会禁用某些功能 当它显示syntax error时,您可以在菜单栏的某处或底部看到消息:Some Features Are Disabled For Security Reasons...
单击该消息,然后继续启用更多功能。

答案 2 :(得分:1)

正如HansUp所说:DDL中的“默认”在这里不起作用。作为替代方案,您可以创建没有默认值的表,然后通过TableDef添加默认值:

CurrentDb().Execute "create table my_employee ..."
CurrentDb().TableDefs("my_employee").Fields("salary").DefaultValue = 15000

答案 3 :(得分:0)

您的问题出在您的PRIMARY KEY声明中

CREATE TABLE my_employee
(
employee_id INTEGER NOT NULL,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(30) NOT NULL,
address VARCHAR(10) NOT NULL,
birthdate DATE,
salary NUMERIC(8,2) DEFAULT 15000,
marital_status CHAR(1),
PRIMARY KEY (employee_id)
);