2017-09-05 46 views
1

如果在AS/400(iSeries,System i,...)上創建SQL表,則會獲取SQL名稱(最多128個字符)和一個系統名稱(最多10個字符)。如果SQL名稱太長,則會生成系統名稱。您可以獨立更改sql名稱(通過RENAME TABLE x TO y)和系統名稱(通過RENAME TABLE x TO SYSTEM NAME y)。DB2 AS/400:不同的系統名稱和10個字符的SQL名稱

也就是說,如果SQL名稱長於10個字符,則可以這樣做。如果是10個字符或更短,系統名稱會自動更改,並且我無法設法將這兩個值更改爲10個或更少字符的不同值。

RENAME TABLE x TO y FOR SYSTEM NAME z不起作用,而RENAME TABLE x TO y1234567890 FOR SYSTEM NAME z確實有效。

有沒有辦法完成它?如果有,如何?

如果不是,這也是一個答案 - 這意味着我唯一的方法來實現我們的SQL和物理文件命名方案是使用更長的長名稱,即使它沒有任何意義(並且不會出現與我的Java實體)。

回答

3

你不能做你想做的。

創建表的語法:

>>-CREATE--+------------+--TABLE--table-name--+-------------------------------------------+--> 
      '-OR REPLACE-'      '-FOR SYSTEM NAME--system-object-identifier-' 

可以讓你的工作更容易一點,你不必稍後重命名錶,但還是:

FOR SYSTEM NAME系統 - 對象標識符
標識表的系統對象標識符。系統對象標識符不能與當前服務器上已有的表,視圖,別名或索引相同。系統對象標識符必須是非限定的系統標識符。 指定系統對象標識符時,表名不能是有效的系統對象名稱。

因此,如果表名稱通常是有效的IBM i系統名稱,則不能使用FOR SYSTEM NAME

+0

謝謝,這就是我的想法。猜猜我必須忍受它。 – kratenko

3

您可能會考慮使用一個簡稱創建表格,然後使用其他簡稱創建ALIAS