SQL WITH Statement: INSERTT with RETURNING
with <span>new_order</span> as( <span class="m_6830738492873100482gmail-hljs-keyword">insert</span> <span class="m_6830738492873100482gmail-hljs-keyword">into</span> orders(email, total) <span class="m_6830738492873100482gmail-hljs-keyword">values</span> (<span class="m_6830738492873100482gmail-hljs-string">'<a target="_blank">rob@bigmachine.io</a>'</span>,<span class="m_6830738492873100482gmail-hljs-number">100.00</span>) <span><span class="m_6830738492873100482gmail-hljs-keyword">returning</span> *</span> ), <span>new_items</span> <span class="m_6830738492873100482gmail-hljs-keyword">as</span> ( <span class="m_6830738492873100482gmail-hljs-keyword">insert</span> <span class="m_6830738492873100482gmail-hljs-keyword">into</span> order_items(order_id, sku, price) <span class="m_6830738492873100482gmail-hljs-keyword">select</span> <a href="http://new_order.id/" target="_blank" rel="noopener" data-saferedirecturl="https://www.google.com/url?hl=en&q=http://new_order.id&source=gmail&ust=1535028417026000&usg=AFQjCNHINX_M_OT015clggcEFQ5qv3D__A">new_order.id</a>, <span class="m_6830738492873100482gmail-hljs-string">'imposter-single'</span>,<span class="m_6830738492873100482gmail-hljs-number">30.00</span> <span class="m_6830738492873100482gmail-hljs-keyword">from</span> <span>new_order</span> <span><span class="m_6830738492873100482gmail-hljs-keyword">returning</span> *</span> ), new_downloads <span class="m_6830738492873100482gmail-hljs-keyword">as</span> ( <span class="m_6830738492873100482gmail-hljs-keyword">insert</span> <span class="m_6830738492873100482gmail-hljs-keyword">into</span> downloads(order_id, order_item_id) <span class="m_6830738492873100482gmail-hljs-keyword">select</span> <a href="http://new_order.id/" target="_blank" rel="noopener" data-saferedirecturl="https://www.google.com/url?hl=en&q=http://new_order.id&source=gmail&ust=1535028417026000&usg=AFQjCNHINX_M_OT015clggcEFQ5qv3D__A">new_order.id</a>, <a href="http://new_items.id/" target="_blank" rel="noopener" data-saferedirecturl="https://www.google.com/url?hl=en&q=http://new_items.id&source=gmail&ust=1535028417026000&usg=AFQjCNF5IIrwou-O6OE2uShJL0_39JsPEA">new_items.id</a> <span class="m_6830738492873100482gmail-hljs-keyword">from</span> <span>new_order</span>, <span>new_items</span> <span><span class="m_6830738492873100482gmail-hljs-keyword">returning</span> *</span> ) <span class="m_6830738492873100482gmail-hljs-keyword">select</span> * <span class="m_6830738492873100482gmail-hljs-keyword">from</span> new_downloads;
I tack on a
<span style="color: #333333;">returning *</span>
from my insert statement for<span style="color: #333333;">order_items</span>
and then I can use that to generate the downloads in a third query, this time using a<span style="color: #333333;">select</span>
for the insert.