1

我不断收到 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

4 回答 4

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 对象,所以它可以具有.ExecuteJet 4.0 的特性。

因为暗示NOT NULL之后没有必要注意。但是不会触发错误。只要您从 ADO 执行该语句,它就可以像您最初编写的那样工作。PRIMARY KEYPRIMARY KEYNOT NULLPRIMARY KEY NOT NULL

于 2013-02-19T18:26:39.673 回答
1

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

于 2013-05-19T15:57:32.700 回答
1

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

CurrentDb().Execute "create table my_employee ..."
CurrentDb().TableDefs("my_employee").Fields("salary").DefaultValue = 15000
于 2014-08-25T11:49:24.507 回答
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)
);
于 2013-02-19T18:38:48.813 回答