SQL 开发人员:为什么我不能 select 按列同义词?
SQL Developer: Why can't I select by column synonym?
我刚刚创建了一个列同义词
CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME;
执行无误。
但是当我说
select dob, col_syn from x_child;
我明白了:
ORA-00904: "COL_SYN": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 4 Column: 13
肯定存在“first_name”列:
select * FROM x_child;
显示:
我已经按了至少 18 次提交并重新启动了 SQL 开发人员。这没有帮助。
此外,当我单击此架构中的同义词时,那里什么也没有。我能看到的唯一同义词是 table 同义词。我应该也能在这里看到列同义词吗?
一个同义词,它是 table、视图、序列、过程、存储函数、包、实体化视图、Java class 模式对象、用户-定义的对象类型,或另一个同义词。 列不能有同义词
同义词同时提供数据独立性和位置透明性。同义词允许应用程序无需修改即可运行,无论哪个用户拥有 table 或视图,也无论哪个数据库拥有 table 或视图。但是,同义词不能替代数据库对象的特权。必须先授予用户适当的权限,然后用户才能使用同义词。
当您在示例中创建同义词时,引用对象根本不需要存在。你的情况
CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME;
您正在创建一个 public 同义词(每个人都可以使用),它引用了对象 X_CHILD(这就是为什么您的 dba_synonyms 中有 reference_name X_CHILD ) 和 reference_type TABLE (不是列)
指定包含同义词的架构。如果省略模式,则 Oracle 数据库会在您自己的模式中创建同义词。 如果您指定了 PUBLIC,则不能为同义词指定架构。
我刚刚创建了一个列同义词
CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME;
执行无误。
但是当我说
select dob, col_syn from x_child;
我明白了:
ORA-00904: "COL_SYN": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 4 Column: 13
肯定存在“first_name”列:
select * FROM x_child;
显示:
我已经按了至少 18 次提交并重新启动了 SQL 开发人员。这没有帮助。
此外,当我单击此架构中的同义词时,那里什么也没有。我能看到的唯一同义词是 table 同义词。我应该也能在这里看到列同义词吗?
一个同义词,它是 table、视图、序列、过程、存储函数、包、实体化视图、Java class 模式对象、用户-定义的对象类型,或另一个同义词。 列不能有同义词
同义词同时提供数据独立性和位置透明性。同义词允许应用程序无需修改即可运行,无论哪个用户拥有 table 或视图,也无论哪个数据库拥有 table 或视图。但是,同义词不能替代数据库对象的特权。必须先授予用户适当的权限,然后用户才能使用同义词。
当您在示例中创建同义词时,引用对象根本不需要存在。你的情况
CREATE PUBLIC SYNONYM col_syn FOR X_CHILD.FIRST_NAME;
您正在创建一个 public 同义词(每个人都可以使用),它引用了对象 X_CHILD(这就是为什么您的 dba_synonyms 中有 reference_name X_CHILD ) 和 reference_type TABLE (不是列)
指定包含同义词的架构。如果省略模式,则 Oracle 数据库会在您自己的模式中创建同义词。 如果您指定了 PUBLIC,则不能为同义词指定架构。