Sam*_*tag -2 database oracle synonym
如果我有另一个 Schema 的表的 Synonym,我可以在 Synonym 中插入内容吗?如果是的话,是否也会影响原来的表呢?
同义词不是“真正的”对象,而只是指向对象的指针;因此,无论您对同义词执行什么操作,您都是对引用的对象执行操作。
您可以通过显式写入架构来访问不同架构中的表:
SQL> select count(1) from sys.sys_table;
COUNT(1)
----------
0
SQL> select count(1) from sys_table;
select count(1) from sys_table
*
ERROR at line 1:
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
创建同义词
SQL> create synonym my_synonym for sys.sys_table;
Synonym created.
Run Code Online (Sandbox Code Playgroud)
然后您可以使用同义词来访问该表:
SQL> select count(1) from my_synonym;
COUNT(1)
----------
0
Run Code Online (Sandbox Code Playgroud)
但您仍然无法直接访问该表:
SQL> select count(1) from sys_table;
select count(1) from sys_table
*
ERROR at line 1:
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
您可以使用同义词插入表中
SQL> insert into my_synonym values (1);
1 row created.
Run Code Online (Sandbox Code Playgroud)
...或使用schema.table:
SQL> insert into sys.sys_table values (2);
1 row created.
Run Code Online (Sandbox Code Playgroud)
不管你怎么做,所有的行都会被插入:
SQL> select count(1) from sys.sys_table;
COUNT(1)
----------
2
SQL> select count(1) from my_synonym;
COUNT(1)
----------
2
Run Code Online (Sandbox Code Playgroud)
如果你删除同义词
SQL> drop synonym my_synonym;
Synonym dropped.
Run Code Online (Sandbox Code Playgroud)
需要使用schema.table,数据和表仍然保留:
SQL> select count(1) from sys.sys_table;
COUNT(1)
----------
2
Run Code Online (Sandbox Code Playgroud)
但是,当然,您不能再使用同义词
SQL> select count(1) from my_synonym;
select count(1) from my_synonym
*
ERROR at line 1:
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7542 次 |
| 最近记录: |