Let's assume we are working on a website to obtain orders from our customers. Our customer shops for items on our website and then places their order. At the end of the order, we confirm their credit charges and then display webpage indicating the successful status of their order. The next thing that normally happens is that we email the customer a copy of their order. But waiting for an email server can cause an unacceptable delay in displaying the order confirmation. So we stage the email confirmation in the table. Instead of actually sending an email to the user during their order process, all we do is INSERT one row containing the order_id into the email staging table. If we have many simultaneous users, the email staging table can contain many rows, one for each order. Every five minutes, a scheduled job looks in the staging table to see if it needs to send out order confirmation emails. If the table contains data, it formulates the email and sends it out. The job then removes the entry from the staging table.
With the staging table, we do not need to perform the action right now. We will get to the action later. So the table contains entries for that action.
This was first published in October 2008