如何使用SQL设置Access 2003字段的默认值?

如何使用SQL设置Access 2003字段的默认值?,sql,database,ms-access,Sql,Database,Ms Access,如何在MS Access中使用SQL设置字段的默认值 我尝试了此操作,但出现语法错误: CREATE TABLE HELLO ( MUN INTEGER NOT NULL, ADD CHAR(50) DEFAULT'16 asd ST.' ) 单词ADD是一个关键字。试试这个: CREATE TABLE HELLO ( MUN INTEGER NOT NULL, [ADD] CHAR(50) DEFAULT '16 asd ST.' ) 只有在ACE/Jet引擎的A

如何在MS Access中使用SQL设置字段的默认值

我尝试了此操作,但出现语法错误:

CREATE TABLE HELLO
( MUN INTEGER  NOT NULL,
ADD   CHAR(50) DEFAULT'16 asd ST.'
)

单词ADD是一个关键字。试试这个:

CREATE TABLE HELLO
( 
    MUN INTEGER  NOT NULL,
    [ADD] CHAR(50) DEFAULT '16 asd ST.'
)

只有在ACE/Jet引擎的ANSI-92查询模式下(然后仅在SQL DDL中),才支持
DEFAULT
CHAR
关键字。正如Jose Basilio指出的,
ADD
是一个保留字,必须使用方括号进行转义。另外,在
DEFAULT
单词和它的子句之间需要一个空格(如Jose所示)

如果在MS Access界面的查询对象中执行SQL,则需要从默认(ANSI-89查询模式)更改为ANSI-92查询模式。请参阅:

如果以编程方式创建表,例如使用DAO,请尝试使用
CurrentProject.Connection。执行
“Sql转到此处”,其中
CurrentProject。Connection
是与数据源的ADO classic或其他OLE DB连接


另外,你当然希望你的专栏是
你好。妈妈
:)

请不要大喊大叫。这是不礼貌的。您的SQL是正确的,但必须在ANSI-92查询模式下执行。默认/传统ANSI-89查询模式的SQL DDL语法不支持默认关键字(也不支持CHAR),原因是MS打算使用更丰富的DAO接口层来实现这类功能。Jet的DDL支持与高级接口的关系一直很差。对于ACE/Jet表的创建/更改,DDL比DAO更丰富。以上面的示例为例:CHAR(50)列是固定宽度的数据类型。对于这种数据类型,DAO接口层没有得到增强,而SQL DDL是。DAO甚至不能通过SQLDDL创建CHAR(50)列!DAO中还缺少许多其他Jet 4.0功能:压缩、检查约束、快速外键等。我想我们都知道,在Jet 4.0时代,“MS打算用ADO和SQL DLL来处理这类事情”。否则他们为什么不能相应地增强DAO?健忘?!如果您使用的是DAO,那么您就可以使用DAO来更改表,而不是为了运行DDL而乱搞ADO。问题是“使用SQL…”(使用DAO不是使用SQL,IMO)“…在MS Access中”,我将其理解为“使用MS Access用户界面”,例如查询对象的SQL视图。我同意不需要切换技术/方法来创建默认值,但是使用DAO根本无法创建CHAR(50)列。