Oracle MERGE语句使用简述(3)

      7902 FORD                           ANALYST                           7566 1981-12-03 00:00:00       3000                    20

      7934 MILLER                         CLERK                             7782 1982-01-23 00:00:00       1300                    10

  

14 rows selected.

例子2:实现删除操作

从emp_m表中删除表emp中DEPTNO=30的记录。

scott@TEST>MERGE INTO EMP_M M

  2  USING (SELECT EMPNO FROM EMP WHERE DEPTNO = 30) N

  3  ON (M.EMPNO = N.EMPNO)

  4  WHEN MATCHED THEN

  5    UPDATE SET M.COMM = DEFAULT 

  6    DELETE WHERE M.EMPNO = N.EMPNO;

  

6 rows merged.

  

scott@TEST>select * from emp_m;

  

     EMPNO ENAME                          JOB                                MGR HIREDATE                   SAL       COMM     DEPTNO

---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------

      7369 SMITH                          CLERK                             7902 1980-12-17 00:00:00        800                    20

      7566 JONES                          MANAGER                           7839 1981-04-02 00:00:00       2975                    20

      7782 CLARK                          MANAGER                           7839 1981-06-09 00:00:00       2450                    10

      7788 SCOTT                          ANALYST                           7566 1987-04-19 00:00:00       3000                    20

      7839 KING                           PRESIDENT                              1981-11-17 00:00:00       5000                    10

      7876 ADAMS                          CLERK                             7788 1987-05-23 00:00:00       1100                    20

      7902 FORD                           ANALYST                           7566 1981-12-03 00:00:00       3000                    20

      7934 MILLER                         CLERK                             7782 1982-01-23 00:00:00       1300                    10

使用注意事项:

不能指定一个在它上面定义了INSTEAD OF触发器的视图为目标视图。

USING子名指定源数据,可以是表、视图或子查询

UPDATE子句中的where条件可以指定目标表的条件也可以指定源表的条件

UPDATE子句中不能更新ON条件中的列,更新表时不能指定DEFAULT

UPDATE子句中指定DELETE WHERE用于删除数据。

INSERT子句中,如果INSERT后省略列名,VALUES后的列的个数必须与目标表列个数一致

INSERT子句中,可以使用WHERE条件限制插入的数据

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/97445ac2e4d515a4b5f3d24175b2c80c.html