Jeg ved, at de fleste databaser har begrænsninger, men det har Postgres ikke. Du kan køre en hvilken som helst oprettelse af taltabel, kolonneændringer og indeksændringer i en transaktion, og ændringerne er ikke synlige for andre brugere. Enheden COMMIT lykkes. Sådan skal databaser være! :-)
Med hensyn til SQL Server kan du køre DDL inde i en transaktion, men SQL Server versionerer ikke metadata, og ændringer vil derfor være synlige for andre, før transaktionen forpligtes. Men nogle DDL-udsagn kan rulles tilbage, hvis du er i en transaktion, men for hvilke der virker, og hvilke der ikke gør, bliver du nødt til at køre nogle tests.