创建表语法错误 - 的MS Access,SQL视图(Create Table Syntax Err

2019-08-17 01:25发布

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

Answer 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执行它。



Answer 2:

嗯,我有与MS Access 2007中同样的问题,但我解决了这个问题以后。
这是因为实际上一些功能默认情况下,在那里安全原因关闭。
当它显示了syntax error ,你可以看到在菜单栏中的消息某处或底部: Some Features Are Disabled For Security Reasons...
点击消息然后继续实现进一步的功能。



Answer 3:

正如HansUp说:“默认”,在DDL不在这里工作了。 作为替代,你可以先创建一个没有默认表,之后添加经的TableDef默认:

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


Answer 4:

你的问题是在你的主键声明

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)
);


文章来源: Create Table Syntax Error - MS Access, SQL view