2011-11-02 18 views
1

我有优势数据库架构师创建一个表 - 我已经在旧的项目之前使用的SQL代码是(简体版)SQL语法,创建表,利用数据库

CREATE TABLE IF NOT EXISTS "SomacountData" 
(
    "Index" AUTOINC, 
    "Data" BLOB, 
    "Section" INTEGER DEFAULT -1, 
    "factor" FLOAT, 
    "ThresHold" FLOAT DESCRIPTION "Calculated Threshold", 
PRIMARY KEY ("Index") COMPRESS NONE 
DESCRIPTION "SomacountData" 
LANGUAGE "ANSI Standard" SORT "Default Order" 
USER MAJOR VERSION 1 
USER MINOR VERSION 4 
); 

在建筑师这似乎更多地涉及 - 建议apreciated。

+1

请尝试以问题的形式提出请求。 –

+0

你的问题到底是什么? –

回答

0

你的外键在哪里?或者这是你唯一的桌子。外键在SQL中至关重要,没有它们,关系代数就无法工作。另外我会使用更多的约束作为NOT NULL。

+0

我的问题是Advantage Database SQL的语法 - 它不支持f.ex IF NOT EXISTS部分。 ADS也不使用FLOAT但是DOUBLE ... – user1026448

1

一些指针:

  • FLOAT可能是最好映射到DOUBLE
  • 设置默认和指定主索引需要额外EXECUTE sp_ModifyFieldProperty报表(见Documentation
  • 我不认为这是在广告中DESCRIPTION
  • IF NOT EXISTS可以用不同的方式解决,如果你有字典,你可以查询system.tables字典的内部表。如果你不这样做,你可以通过使用TRY CREATE TABLE ... CATCH ALL END TRY忽略创建错误。

如果您有任何具体问题,您应该在SO上创建一个新问题。

UPDATE:

您还可以使用集成的表设计和转储表的代码到SQL,但不会解决你的问题IF NOT EXISTS

+1

您可以使用DEFAULT关键字和PRIMARY KEY关键字(如“CREATE TABLE”SomacountData“(”index“autoinc primary key,...)指定表创建时的默认和主键。 。“section”integer default'-1',....)“DEFAULT值必须是字符串文字,但会插入一个整数值。 – Edgar

+0

+1,感谢Edgar的纠正。 'sp_ModifyFieldProperty'仍然可以工作,并且至少可以用字典比较工具来制作diff脚本。 –