How can I ensure the user can insert and edit data while updating table
Get rid of all the complex design.

Plan A:  Get rid of A and A_cache and the trigger and the rebuild; run queries against B and C.  Perhaps you need better indexes?  Or "Summary tables"?

Plan B:  (More directly in line with your design.)  Get rid of A_cache. Do this, which will avoid A ever being unreachable:


Create A_new from B and C
RENAME TABLE A TO A_old, A_new TO A;  -- atomic and instantaneous
DROP TABLE A_old;