【发布时间】:2008-09-29 23:34:37
【问题描述】:
今天早上我在一个pl/sql脚本中遇到了以下ddl:
创建索引 genuser.idx$$_0bdd0011 ...
我最初的想法是索引名称是由工具生成的……但我也不是 pl/sql 超级明星,所以我很可能是不正确的。双美元符号在这个语句中有什么特殊意义吗?
【问题讨论】:
今天早上我在一个pl/sql脚本中遇到了以下ddl:
创建索引 genuser.idx$$_0bdd0011 ...
我最初的想法是索引名称是由工具生成的……但我也不是 pl/sql 超级明星,所以我很可能是不正确的。双美元符号在这个语句中有什么特殊意义吗?
【问题讨论】:
没有特殊意义或意义。
SQL> create table t (col number)
2 /
Table created.
SQL> create index idx$$_0bdd0011 on t(col)
2 /
Index created.
注意:CREATE INDEX 是一个 DDL 语句,通常在 SQL 脚本中执行,而不是在 PL/SQL 中。
【讨论】:
您最初的想法似乎是正确的。这看起来是由工具生成的索引名称(但不是由 Oracle 分配,因为未指定索引名称)。美元符号除了是人类开发人员很少使用的有效符号之外没有任何特殊含义,因此可以方便地降低系统生成的名称与人类生成的名称发生冲突的风险。
【讨论】:
不管他的名字来自哪里,这都与 Oracle 的书面建议相反:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#SQLRF00223
Oracle 强烈建议您不要在非引号标识符中使用 $ 和 #
【讨论】: