title: PostgreSQL multi-value upserts
body: <p>is it possible to perform a multi-value upsert in PostgreSQL?  I know multi-value inserts exist, as do the "ON CONFLICT" key words to perform an update if the key is violated... but is it possible to bring the two together?  Something like so...</p>
  
  <pre><code>INSERT INTO table1(col1, col2) VALUES (1, 'foo'), (2,'bar'), (3,'baz')
  ON CONFLICT ON CONSTRAINT theConstraint DO
  UPDATE SET (col2) = ('foo'), ('bar'), ('baz')
  </code></pre>
  
  <p>I googled the crud out of this and couldn't find anything on regarding it.</p>
  
  <p>I have an app that is utilizing pg-promise and I'm doing batch processing.  It works but its horrendously slow (like 50-ish rows every 5 seconds or so...).  I figured if I could do away with the batch processing and instead correctly build this multi-valued upsert query, it could improve performance.</p>
  
  <p>Edit:
  Well... I just tried it myself and no, it doesn't work.  Unless I'm doing it incorrectly.  So now I guess my question has changed to, what's a good way to implement something like this?</p>