Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Merge doesn't do delete
The purpose of the 'Merge' command is not to sync two tables. It's purpose is to "upsert" new data to a table containing old data. Best for ETL in staging area of DWH. Like if you have lots of data in some dimension table, and you need to add the changes from last month. About the best way to keep two tables in sync... Well, it depends on your data volume. If you can afford it, think about "truncate" and then "insert /*+append*/ ...". Also you may take a look of dbms_rectifier_diff.rectify. This is made for replication, but can do the job.
Rgds,
Yavor
On Fri, 13 Oct 2006 16:30:49 +0300, John J Cantu <John_J_Cantu_at_raytheon.com> wrote:
> All,
>
> The 'Merge' command seems to be incomplete since it doesn't delete records
> that don't exist. The 'Merge' command only performs an update or insert.
> Isn't the purpose of the 'Merge' command to kind of make one table look
> like another one? Sure there will be times when only updating and
> inserting records is enough to keep the tables insync, but only if records
> aren't deleted from the source table. Any comments or suggestions on the
> best way to keep two tables in sync within the same database? Will I have
> to run two commands, one command will be the Merge to update and insert
> and a delete command that queries for keys that don't exist anymore in the
> source table?
>
> Thanks,
>
> John Cantu
-- http://www.freelists.org/webpage/oracle-lReceived on Fri Oct 13 2006 - 09:06:25 CDT
![]() |
![]() |