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

DB2 AS/400: Different System Name and SQL Name of 10 chars for table

如果您在 AS/400(iSeries、System i、...)上创建 SQL-table,则 table 会得到 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-实体)。

您可以考虑只用一个短名称创建 table,然后用另一个短名称创建 ALIAS

你不能为所欲为。

创建table语法:

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

可能会让您的工作更轻松一些,因为您以后不必重命名 table,但仍然:

FOR SYSTEM NAME system-object-identifier
Identifies the system-object-identifier of the table. system-object-identifier must not be the same as a table, view, alias, or index that already exists at the current server. The system-object-identifier must be an unqualified system identifier. When system-object-identifier is specified, table-name must not be a valid system object name.

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