繁体   English   中英

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

[英]Create Table Syntax Error - MS Access, SQL view

我不断收到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执行它。 我将您的语句加载到一个字符串变量中,并从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功能。

注意在PRIMARY KEY之后不需要NOT NULL因为PRIMARY KEY隐含NOT NULL 但是, PRIMARY KEY NOT NULL不会触发错误。 只要您从ADO执行该语句,该语句便会按照您最初编写该语句的方式工作。

好吧,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

您的问题出在您的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)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM