For full loads I stage the data for all tables, and then finally in a transaction perform a table switch to switch the staging and main tables.
For incremental load however, I stage last 7 days of data for all incremental load tables, and then in a transaction I perform an update/insert with the main table.
The incremental load is causing blocking and I was thinking of having a new table called holding table. I will stage the last 7 days of data, update the holding table and switch holding/main tables, and again update the holding table.
Is there any other approach?