Vím, že většina databází má omezení, ale Postgres ne. V transakci můžete spustit libovolné vytváření číselných tabulek, změny sloupců a indexů a změny nejsou viditelné pro ostatní uživatele, jednotka COMMIT uspěje. Takové by databáze měly být! :-)
Pokud jde o SQL Server, můžete spustit DDL uvnitř transakce, ale SQL Server neverzuje metadata, takže změny budou viditelné pro ostatní před potvrzením transakce. Ale některé příkazy DDL lze vrátit zpět, pokud jste v transakci, ale pro které fungují a které ne, budete muset provést nějaké testy.