共用方式為


CREATE TABLE - SQL 命令

建立具有指定欄位的數據表。

Visual FoxPro ODBC Driver 支援此命令的原生 Visual FoxPro 語言語法。 如需驅動程式特定資訊,請參閱 驅動程式備註

語法

  
CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]  
   (FieldName1FieldType [(nFieldWidth [, nPrecision])]  
      [NULL | NOT NULL]   
      [CHECK lExpression1 [ERROR cMessageText1]]  
      [DEFAULT eExpression1]  
      [PRIMARY KEY | UNIQUE]  
      [REFERENCES TableName2 [TAG TagName1]]  
      [NOCPTRANS]  
   [, FieldName2 ...]  
      [, PRIMARY KEY eExpression2 TAG TagName2  
      |, UNIQUE eExpression3 TAG TagName3]  
      [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]  
            REFERENCES TableName3 [TAG TagName5]]  
      [, CHECK lExpression2 [ERROR cMessageText2]])  
| FROM ARRAY ArrayName  

引數

CREATE TABLE |DBF TableName1
指定要建立的數據表名稱。 TABLE 和 DBF 選項完全相同。

NAME LongTableName
指定數據表的長名稱。 只有在資料庫開啟時,才能指定長數據表名稱,因為長數據表名稱會儲存在資料庫中。

長名稱最多可以包含 128 個字元,而且可用來取代資料庫中的簡短檔名。

FREE
指定數據表不會加入至開啟的資料庫。 如果資料庫未開啟,則不需要FREE。

(FieldName1 FieldType [( nFieldWidth [, nPrecision]]]
分別指定功能變數名稱、欄位類型、欄位寬度和欄位有效位數(小數位數)。

FieldType 是單一字母,表示欄位的 數據類型。 某些字段數據類型需要您指定 nFieldWidthnPrecision 或兩者。

D、G、I、L、M、P、T 和 Y 類型會忽略 nFieldWidthnPrecision如果 B、F 或 N 類型未包含 nPrecision,則 nPrecision 預設為零(沒有小數位數)。

NULL
允許欄位中的 Null 值。

NOT NULL
防止欄位中的 Null 值。

如果您省略 NULL 和 NOT NULL,SET NULL 的目前設定會決定欄位中是否允許 Null 值。 不過,如果您省略 NULL 和 NOT NULL 並包含 PRIMARY KEY 或 UNIQUE 子句,則會忽略 SET NULL 的目前設定,且欄位預設為 NOT NULL。

CHECK lExpression1
指定欄位的驗證規則。 lExpression1 可以是用戶定義的函式。 每當附加空白記錄時,就會檢查驗證規則。 如果驗證規則不允許附加記錄中的空白域值,就會產生錯誤。

ERROR cMessageText1
指定欄位規則產生錯誤時顯示的錯誤訊息 Visual FoxPro。 只有在 [瀏覽] 視窗或 [編輯] 視窗內變更資料時,才會顯示訊息。

DEFAULT eExpression1
指定欄位的預設值。 eExpression1數據類型必須與欄位的數據類型相同。

PRIMARY KEY
建立欄位的主要索引。 主要索引標籤的名稱與欄位相同。

UNIQUE
建立欄位的候選索引。 候選索引標籤的名稱與欄位相同。

注意

候選索引(在 CREATE TABLE 或 ALTER TABLE - SQL 中包含 UNIQUE 選項所建立的索引,與 INDEX 命令中的 UNIQUE 選項所建立的索引不同。 在 INDEX 命令中使用 UNIQUE 選項建立的索引允許重複索引鍵;候選索引不允許重複的索引鍵。 如需 UNIQUE 選項的其他資訊,請參閱 INDEX

在用於主要或候選索引的欄位中,不允許 Null 值和重複記錄。 不過,如果您為支援 Null 值的欄位建立主要或候選索引,Visual FoxPro 將不會產生錯誤。 如果您嘗試將 Null 或重複的值輸入用於主要或候選索引的欄位,Visual FoxPro 將會產生錯誤。

REFERENCES TableName2[TAG TagName1]
指定建立持續性關聯性的父數據表。 如果您省略 TAG TagName1,則會使用父數據表的主索引鍵來建立關聯性。 如果父數據表沒有主要索引,Visual FoxPro 會產生錯誤。

包含 TAG TagName1 ,以根據父數據表的現有索引標記建立關聯。 索引標記名稱最多可以包含10個字元。

父數據表不能是免費數據表。

NOCPTRANS
防止將字元和備忘字段轉譯為不同的代碼頁。 如果數據表轉換成另一個代碼頁,則不會轉譯 NOCPTRANS 的欄位。 NOCPTRANS 只能針對字元和備忘欄位指定。

下列範例會建立名為 mytable 的數據表,其中包含兩個字元欄位和兩個備忘字段。 第二個字元欄位 char2 和第二個備忘欄位 memo2 包含 NOCPTRANS 以防止翻譯。

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;  
   memo1 M, memo2 M NOCPTRANS)  

PRIMARY KEY eExpression2 TAG TagName2
指定要建立的主要索引。 eExpression2 會指定數據表中的任何欄位或欄位組合。 TAG TagName2 會指定所建立之主要索引標記的名稱。 索引標記名稱最多可以包含10個字元。

因為數據表只能有一個主要索引,所以如果您已經為字段建立主索引,則不能包含這個子句。 如果您在 CREATE TABLE 中包含多個 PRIMARY KEY 子句,Visual FoxPro 會產生錯誤。

UNIQUE eExpression3TAG TagName3
建立候選索引。 eExpression3 會指定數據表中的任何欄位或欄位組合。 不過,如果您已使用其中一個 PRIMARY KEY 選項建立主索引,則不能包含為主要索引指定的欄位。 TAG TagName3 會指定所建立候選索引標籤名稱。 索引標記名稱最多可以包含10個字元。

數據表可以有多個候選索引。

FOREIGN KEY eExpression4TAG TagName4[NODUP]
建立外部 (非primary) 索引,並建立與父數據表的關聯性。 eExpression4 會指定外索引鍵表示式,而 TagName4 會指定所建立之外索引鍵標記的名稱。 索引標記名稱最多可以包含10個字元。 包含 NODUP 以建立候選外部索引。

您可以為數據表建立多個外部索引,但外部索引表達式必須在數據表中指定不同的欄位。

REFERENCES TableName3[TAG TagName5]
指定建立持續性關聯性的父數據表。 包含 TAG TagName5 ,以根據父數據表的索引標記建立關聯。 索引標記名稱最多可以包含10個字元。 根據預設,如果您省略TAG TagName5, 則會使用父數據表的主索引鍵來建立關聯性。

CHECK eExpression2[ERROR cMessageText2]
指定數據表驗證規則。 ERROR cMessageText2 會指定執行數據表驗證規則時顯示的錯誤訊息 Visual FoxPro。 只有在 [瀏覽] 視窗或 [編輯] 視窗中的數據變更時,才會顯示訊息。

FROM ARRAY ArrayName
指定現有數位的名稱,其內容是數據表中每個字段的名稱、類型、有效位數和小數字數。 數位的內容可以使用 AFIELDS( ) 函式來定義

備註

新的數據表會在最低的可用工作區中開啟,而且可由其別名存取。 不論 SET EXCLUSIVE 的目前設定為何,新數據表都會以獨佔方式開啟。

如果資料庫已開啟且未包含FREE子句,則會將新的數據表新增至資料庫。 您無法建立與資料庫中資料表同名的新資料表。

如果資料庫已開啟,CREATE TABLE - SQL 需要獨佔的資料庫使用。 若要開啟供獨佔使用的資料庫,請在 OPEN DATABASE 中包含 EXCLUSIVE。

如果您在建立新的數據表時未開啟資料庫,包括 NAME、CHECK、DEFAULT、FOREIGN KEY、PRIMARY KEY 或 REFERENCES 子句,則會產生錯誤。

注意

CREATE TABLE 語法會使用逗號分隔特定 CREATE TABLE 選項。 此外,NULL、NOT NULL、CHECK、DEFAULT、PRIMARY KEY 和 UNIQUE 子句必須放在包含數據行定義的括弧內。

驅動程式備註

當您的應用程式使用下表所示的語法,將 ODBC SQL 語句 CREATE TABLE 傳送至數據源時,Visual FoxPro ODBC Driver 會使用下表所示的語法,將命令轉譯成 Visual FoxProCREATE TABLE 命令。

ODBC 語法 Visual FoxPro 語法
CREATE TABLE base-table-name

資料行標識碼數據類型

[NOT NULL]

[,column-identifier 數據類型

[NOT NULL] ...)
CREATE TABLE TableName1 [NAME LongTableName]

FieldName1 FieldType

[(nFieldWidth [, nPrecision])]

[NOT NULL])

當您使用驅動程式建立資料表時,驅動程式會在建立之後立即關閉數據表,以允許其他使用者存取數據表。 這與 Visual FoxPro 不同,這讓數據表在建立時以獨佔方式開啟。 不過,如果包含 CREATE TABLE 語句的數據源上的預存程式執行,數據表會保持開啟狀態。

如果數據源是資料庫 (.dbc 檔案),Visual FoxPro ODBC Driver 會建立名為 LongTableName 的數據表,其名稱與 base-table-name 相同。

使用資料定義語言 (DDL)

您無法在下列位置包含 DDL:

  • 在需要交易的批次 SQL 語句中

  • 在手動認可模式中,除非您的應用程式第一次呼叫 SQLTransact,否則在需要交易的語句之後。

例如,如果您想要建立臨時表,您應該先建立數據表,再開始需要交易的語句。 如果您在需要交易的批次 SQL 語句中包含 CREATE TABLE 語句,驅動程式會傳回錯誤訊息。

另請參閱

ALTER TABLE - SQL 命令
支援的資料類型 (Visual FoxPro ODBC 驅動程式)
INSERT - SQL 命令
SELECT - SQL 命令