title: What is supported as transactional in postgres
body: <p>I am trying find out what is postgres can handle safely inside of transaction, but I cannot find the relavant information in the <a href="http://www.postgresql.org/docs/8.4/static/index.html">postgres manual</a>. So far I have found out the following: </p>
  
  <ul>
  <li><code>UPDATE</code>, <code>INSERT</code> and <code>DELTE</code> are fully supported inside transactions and rolled back when the transaction is not finished</li>
  <li><code>DROP TABLE</code> is not handled safely inside a transaction, and is undone with a <code>CREATE TABLE</code>, thus recreates the dropped table but does not repopulate it</li>
  <li><code>CREATE TABLE</code> is also not truly transactionized and is instead undone with a corresponding <code>DROP TABLE</code></li>
  </ul>
  
  <p>Is this correct? Also I could not find any hints as to the handling of <code>ALTER TABLE</code> and <code>TRUNCATE</code>. In what way are those handled and are they safe inside transactions? Is there a difference of the handling between different types of transactions and different versions of postgres?</p>