2011-11-02 19 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腳本。 –