Re: Merge doesn't do delete

  • From: "Yavor Ivanov" <Yavor_Ivanov@xxxxxxxx>
  • To: John_J_Cantu@xxxxxxxxxxxx
  • Date: Fri, 13 Oct 2006 17:06:25 +0300

        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@xxxxxxxxxxxx> 
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



--
//www.freelists.org/webpage/oracle-l


Other related posts: