title: Do DDL statements always give you an implicit commit, or can you get an implicit rollback?
body: <p>If you're halfway through a transaction and perform a DDL statement, such as truncating a table, then the transaction commits.</p>
  
  <p>I was wondering whether this was always the case and by definition, or is there a setting hidden somewhere that would <em>rollback</em> the transaction instead of committing.</p>
  
  <p>Thanks.</p>
  
  <p><strong>Edit to clarify...</strong></p>
  
  <p>I'm not looking to rollback after a truncate. I just want to confirm that statements already carried out are <em>absolutely always</em> going to be committed before a DDL. Just want to make sure there isn't a system property somewhere that someone could set to wreck my code.</p>
  
  <p>I understand the need to commit before and after a DDL, but conceptually I'd have thought the same consistency requirement <em>could</em> be achieved with a rollback before the DDL and a commit after.</p>