2017-09-05 118 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