2012-11-13 84 views
2

我可以使用保留關鍵字作爲Derby中的列名嗎? 我試圖將數據庫模式遷移到Derby以進行測試。出於這個原因,我不想改變模式結構(列名等)。如何使用關鍵字作爲Derby中的列名稱

所以問題是,我怎樣才能在Derby中創建列名爲「open」的表?至於示例表:

create table test (open integer); 

試圖引用的列名,但至今沒有成功...

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "open" at line 1, column 21. 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) 
+0

@MahmoudGamal:請注意,殭屍SQL Server和MySQL也支持使用雙引號的標準引用''' - 我總是喜歡使用括號或那些可怕的反引號的非標準記號法 –

回答

7

引用保留字(的標準方法和德比遵循標準爲幾乎所有的DBMS在這方面做的)是使用雙引號。

create table test ("OPEN" integer); 

但要小心,一旦你做那個列(或表)的名稱變得區分大小寫。 "OPEN"是與"open""Open"不同的列。

我強烈建議你做不是使用需要引用它們的名稱。

+0

好的,我發誓我確實嘗試了六次,但它不起作用,但現在它工作了......我正在編寫一些遺留數據庫的測試,並且在這種情況下無法真正使用原始DBMS,但是謝謝! – Toni

+0

@ a_horse_with_no_name - 不知道這個標準表示法,謝謝。順便說一下,我從書中知道這些SQL標準的一些東西,但是我找不到任何涵蓋標準sql的書(更多細節除外)其中涵蓋了基本知識,我認爲我讀了它)作爲一本參考書,據我所知,標準的ansi文檔是昂貴的,你知道任何書籍或文章覆蓋更多的書尾巴。 –

+0

嗯,這對我來說根本不適用於Derby 10.8.3.0 CREATE TABLE MyTable(「DESC」VARCHAR(25)NOT NULL,...)無法抱怨「DESC」 –

相關問題