Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 插入到Oracle同义词_Database_Oracle_Synonym - Fatal编程技术网

Database 插入到Oracle同义词

Database 插入到Oracle同义词,database,oracle,synonym,Database,Oracle,Synonym,如果我有另一个模式的表的同义词,我可以插入同义词吗? 如果是这样,它还会影响原始表吗?同义词不是真正的对象,只是指向对象的指针;所以,无论你对同义词做什么,你都是在引用的对象上做的 通过显式写入模式,可以访问不同模式中的表: SQL> select count(1) from sys.sys_table; COUNT(1) ---------- 0 SQL> select count(1) from sys_table; select count(1) fr

如果我有另一个模式的表的同义词,我可以插入同义词吗?
如果是这样,它还会影响原始表吗?

同义词不是真正的对象,只是指向对象的指针;所以,无论你对同义词做什么,你都是在引用的对象上做的

通过显式写入模式,可以访问不同模式中的表:

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
创建同义词

SQL> create synonym my_synonym for sys.sys_table;

Synonym created.
然后可以使用同义词访问该表:

SQL> select count(1) from my_synonym;

  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
但您仍然无法直接访问该表:

SQL> select count(1) from my_synonym;

  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
您可以使用同义词插入到表中

SQL> insert into my_synonym values (1);

1 row created.
SQL> drop synonym my_synonym;

Synonym dropped.
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
。。。或使用schema.table:

无论您如何操作,都会插入所有行:

SQL> select count(1) from sys.sys_table;

  COUNT(1)
----------
         2

SQL> select count(1) from my_synonym;

  COUNT(1)
----------
         2
如果你放弃同义词

SQL> insert into my_synonym values (1);

1 row created.
SQL> drop synonym my_synonym;

Synonym dropped.
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
您需要使用schema.table,数据和表仍然保留:

SQL> select count(1) from sys.sys_table;

  COUNT(1)
----------
         2
但是,当然,你不能再使用同义词了

SQL> insert into my_synonym values (1);

1 row created.
SQL> drop synonym my_synonym;

Synonym dropped.
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

同义词只是指向对象的指针。因此,您可以在SQL代码中将其视为本地对象,对其执行的任何DML操作都将在指向的对象上执行。