如果在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实体)。
答案 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
。