我不断收到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)
);
由于您的DDL语句包括DEFAULT
,则必须使用ADO执行。 我装你的语句转换成一个字符串变量,并从2007年访问这样执行它:
CurrentProject.Connection.Execute strSql
salary字段是小数精度8,尺度2和默认15000。
DEFAULT
是与Jet 4.0添加了访问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
不会触发错误。 该声明可以作为你最初写的,只要你从ADO执行它。
嗯,我有与MS Access 2007中同样的问题,但我解决了这个问题以后。
这是因为实际上一些功能默认情况下,在那里安全原因关闭。
当它显示了syntax error
,你可以看到在菜单栏中的消息某处或底部: Some Features Are Disabled For Security Reasons...
。
点击消息然后继续实现进一步的功能。
正如HansUp说:“默认”,在DDL不在这里工作了。 作为替代,你可以先创建一个没有默认表,之后添加经的TableDef默认:
CurrentDb().Execute "create table my_employee ..."
CurrentDb().TableDefs("my_employee").Fields("salary").DefaultValue = 15000
你的问题是在你的主键声明
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)
);