DB2 AS / 400:表的10个字符的不同系统名称和SQL名称

时间:2017-09-05 09:07:31

标签: sql ibm-midrange db2-400

如果在AS / 400(iSeries,System i,...)上创建SQL表,则该表将获得一个SQL名称(最多128个字符)和一个系统名称(最多10个字符)。如果SQL名称太长,则会生成系统名称。您可以单独更改sql名称(通过RENAME TABLE x TO y)和系统名称(通过RENAME TABLE x TO SYSTEM NAME y)。

也就是说,如果SQL名称超过10个字符,则可以这样做。如果它是10个字符或更短,系统名称会自动更改,我无法将两个更改为10个或更少字符的不同值。

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

有没有办法完成它?如果有,怎么样?

如果没有,那也是一个答案 - 这意味着我实现SQL和物理文件命名方案的唯一方法是使用更长的长名称,即使它没有任何意义(并且不符合我的Java实体)。

2 个答案:

答案 0 :(得分:3)

您可以考虑使用一个简短名称创建表,并使用另一个短名称创建ALIAS

答案 1 :(得分:3)

你不能做你想做的事。

create table语法:

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

可能会让您的工作变得更轻松,因为您不必在以后重命名该表,但仍然:

  

FOR SYSTEM NAME system-object-identifier
   标识表的系统对象标识符。 system-object-identifier不能与当前服务器上已存在的表,视图,别名或索引相同。 system-object-identifier必须是不合格的系统标识符。   指定system-object-identifier时,table-name不能是有效的系统对象名。

因此,如果表名通常是有效的IBM i系统名称,则不能使用FOR SYSTEM NAME