Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Bảng MERGE, không làm gì khi khớp

Đối với trường hợp của bạn, không cần sử dụng phần:

WHEN MATCHED THEN UPDATE ...

( sử dụng WHEN MATCHED THEN UPDATE SET a.id = a.id được chấp nhận (Oracle không làm phiền) nhưng không có tác động, do đó, việc sử dụng như vậy là thừa, vì bạn không muốn thay đổi bất kỳ điều gì cho trường hợp phù hợp. )

Tiếp tục với những điều sau cho trường hợp hiện tại:

SQL> CREATE TABLE domains( 
                           id          INT, 
                           name        VARCHAR2(50), 
                           code        VARCHAR2(50), 
                           description VARCHAR2(50)
                         );

SQL> INSERT INTO domains VALUES(1,'Domain A','D.A.','This is Domain A');

SQL> MERGE INTO domains A USING 
     (SELECT 2 id, 'Domain A' name, 'D.A.' code, 'This is Domain A' description 
        FROM domains) b
          ON ( a.name = b.name )
        WHEN NOT MATCHED THEN INSERT( a.id, a.name, a.code, a.description ) 
                              VALUES( b.id, b.name, b.code, b.description );

SQL> SELECT * FROM domains;

ID  NAME        CODE    DESCRIPTION
--  --------   -----  ----------------
1   Domain A    D.A.  This is Domain A

SQL> DELETE domains;

SQL> INSERT INTO domains VALUES(1,'Domain A','D.A.','This is Domain A');
-- we're deleting and inserting the same row again

SQL> MERGE INTO domains A USING       
 (SELECT 2 id, 'Domain B' name, 'D.B.' code, 'This is Domain B' description 
    FROM domains) b
      ON ( a.name = b.name )
    WHEN NOT MATCHED THEN INSERT( a.id, a.name, a.code, a.description ) 
                          VALUES( b.id, b.name, b.code, b.description );


SQL> SELECT * FROM domains;

ID  NAME        CODE    DESCRIPTION
--  --------   -----  ----------------
1   Domain A    D.A.  This is Domain A
2   Domain B    D.B.  This is Domain B

Bản trình diễn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hoàn tác và làm lại trong cơ sở dữ liệu Oracle là gì

  2. Cập nhật bảng Oracle với các giá trị từ tệp CSV

  3. Cách thực hiện giao dịch riêng lẻ trong Oracle PLSQL

  4. Giải quyết các hàm toán học PL / SQL

  5. Chèn giá trị mặc định khi chèn null