SQL开发人员:为什么我不能选择按列同义词?

SQL开发人员:为什么我不能选择按列同义词?,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我刚刚创建了一个列同义词 为X_CHILD.FIRST_NAME创建公共同义词col_syn 这是毫无错误地执行的 但是当我说 从x_child中选择dob、col_syn 我明白了: ORA-00904: "COL_SYN": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action: Error at Line: 4 Column: 13 列的第一个

我刚刚创建了一个列同义词

为X_CHILD.FIRST_NAME创建公共同义词col_syn

这是毫无错误地执行的

但是当我说

从x_child中选择dob、col_syn

我明白了:

ORA-00904: "COL_SYN": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 4 Column: 13
列的第一个\u名称确实存在: 从x_子项中选择*; 显示:

我至少按了18次commit并重新启动了SQLDeveloper。这没有帮助

另外,当我点击这个模式中的同义词时,那里什么也没有。我能看到的唯一同义词是table同义词。我应该也能在这里看到专栏同义词吗


同义词,是表、视图、序列、过程、存储函数、包、物化视图、Java类架构对象、用户定义对象类型或其他同义词的替代名称。列不能有同义词

同义词提供了数据独立性和位置透明性。同义词允许应用程序在不进行修改的情况下运行,而不管哪个用户拥有表或视图,也不管哪个数据库拥有表或视图。但是,同义词不能替代数据库对象上的权限。在用户可以使用同义词之前,必须向用户授予适当的权限

在示例中创建同义词时,引用对象根本不需要存在。就你而言

CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME; 
您正在创建一个可供所有人使用的公共同义词,该同义词引用对象X_CHILD,这就是为什么在dba_同义词中有reference_name X_CHILD和as reference_type TABLE not column

指定要包含同义词的架构。如果省略模式,则Oracle数据库将在您自己的模式中创建同义词。如果已指定PUBLIC,则不能为同义词指定架构


表示可以为表、视图、序列、运算符、过程、存储函数、包、物化视图、Java类架构对象、用户定义的对象类型或其他同义词创建同义词。专栏没有提到,@Poundstibbons-你赢了我!但是我能够在列上复制一个“成功”的CREATE同义词,就像OP一样。所以我想真正的问题是,为什么oracle不在该列上返回一个错误?oracle不验证引用的对象。也许他们想让你提前为以后定义的东西创建同义词。如果你放下对象,它也不会删除同义词,所以可以说它只是保持一致。为hatstand.banana创建同义词废话;运行良好。