Advantage Database 9.1,使用PK创建表

时间:2012-08-06 20:07:58

标签: advantage-database-server

create table WEBLOG
(
ORDERNO CHAR(9) NOT NULL,
USERNAME CHAR(50) NOT NULL,
ACTION CHAR(255) NOT NULL,
NOTE MEMO,
UPDATEDATE DATE NOT NULL,
UPDATETIME TIME NOT NULL,
IP CHAR(15),
PK CHAR(36) NOT NULL,
PRIMARY KEY(PK)
)

以上查询不起作用,错误信息说,

ERROR IN SCRIPT: poQuery: Error 7200:  AQE Error:  State = HY000;   NativeError = 2215;  [iAnywhere Solutions][Advantage SQL Engine]Invalid create options:  
NOCPTRANS and nullable column type options are only valid with ADS_VFP table type. -- Location of error in the SQL statement is: 23 (line: 3 column: 1)

该查询出了什么问题?

我的优势数据库版本是9.1。

任何人都知道,请指教。

谢谢!

1 个答案:

答案 0 :(得分:4)

此错误是由使用NOT NULL引起的,NOT NULL仅在ADS_VFP(Visual FoxPro)表类型上受支持。

使用Advantage处理CONSTRAINT NOT NULL的通常方法是通过ADS数据字典建立连接,然后使用free table语法。它不适用于CONSTRAINT NOT NULL(不在数据字典中的表)连接,但是 - 尝试在免费表上将其更改为The field-level or record-level constraint is invalid. Field level constraints are not supported on free table.会导致错误ARC32

ADS 9.1 help中记录了这一点,具体见CREATE TABLE

  

vfp-option :: = NULL | NOT NULL | NOCPTRANS

     

这些选项适用于Visual FoxPro表(ADS_VFP),可以与空闲表和数据字典表一起使用。 NULL(和NOT NULL)选项指示列是否能够物理保持NULL值。这与NOT NULL约束不同。如果在没有NULL选项的情况下创建Visual FoxPro列,则在尝试在该列中存储NULL时将生成错误。 NOCPTRANS选项适用于Visual FoxPro字符和备注字段类型。如果提供此选项,则不会跨代码页(ANSI / OEM转换)转换数据。

顺便说一句,当你在ORDERNO CHAR(9) NOT NULL中遇到语法错误,并且你的SQL结构与你的结构相同时,光标就在导致错误的行上。在这种情况下,错误是在第一列定义(NOT NULL)上引起的。更改该单列定义以删除{{1}}会导致错误发生在下一行。