CREATE TABLE people_source (
person_id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR2(20) NOT NULL,
last_name VARCHAR2(20) NOT NULL,
title VARCHAR2(10) NOT NULL
)
Table created.
CREATE TABLE people_target (
person_id INTEGER NOT NULL PRIMARY KEY,
first_name VARCHAR2(20) NOT NULL,
last_name VARCHAR2(20) NOT NULL,
title VARCHAR2(10) NOT NULL
)
Table created.
INSERT INTO people_target VALUES (1, 'John', 'Smith', 'Mr')
1 row(s) inserted.
INSERT INTO people_target VALUES (2, 'alice', 'jones', 'Mrs')
1 row(s) inserted.
INSERT INTO people_source VALUES (2, 'Alice', 'Jones', 'Mrs.')
1 row(s) inserted.
INSERT INTO people_source VALUES (3, 'Jane', 'Doe', 'Miss')
1 row(s) inserted.
INSERT INTO people_source VALUES (4, 'Dave', 'Brown', 'Mr')
1 row(s) inserted.
COMMIT
Statement processed.
SELECT * FROM people_source
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
2 | Alice | Jones | Mrs. |
3 | Jane | Doe | Miss |
4 | Dave | Brown | Mr |
SELECT * FROM people_target
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
1 | John | Smith | Mr |
2 | alice | jones | Mrs |
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN matched THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
1 row(s) updated.
SELECT * FROM people_target
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
1 | John | Smith | Mr |
2 | Alice | Jones | Mrs. |
ROLLBACK
Statement processed.
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN NOT matched THEN INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title )
2 row(s) inserted.
SELECT * FROM people_target
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
1 | John | Smith | Mr |
2 | alice | jones | Mrs |
3 | Jane | Doe | Miss |
4 | Dave | Brown | Mr |
ROLLBACK
Statement processed.
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN matched THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
WHEN NOT matched THEN INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title )
3 row(s) updated.
SELECT * FROM people_target
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
1 | John | Smith | Mr |
2 | Alice | Jones | Mrs. |
3 | Jane | Doe | Miss |
4 | Dave | Brown | Mr |
ROLLBACK
Statement processed.
MERGE INTO people_target pt
USING people_source ps
ON (pt.person_id = ps.person_id)
WHEN matched THEN UPDATE
SET pt.first_name = ps.first_name,
pt.last_name = ps.last_name,
pt.title = ps.title
DELETE where pt.title = 'Mrs.'
WHEN NOT matched THEN INSERT
(pt.person_id, pt.first_name, pt.last_name, pt.title)
VALUES (ps.person_id, ps.first_name, ps.last_name, ps.title)
WHERE ps.title = 'Mr'
2 row(s) updated.
SELECT * FROM people_target
PERSON_ID | FIRST_NAME | LAST_NAME | TITLE |
---|---|---|---|
1 | John | Smith | Mr |
4 | Dave | Brown | Mr |
ROLLBACK
Statement processed.