Create table in a transaction

Ulf Wiger <>
Fri Nov 3 09:52:44 CET 2000

On Thu, 2 Nov 2000, Dan Gudmundsson wrote:

>Sorry, but you can't do schema_transactions inside a normal transaction.
>schema_transaction's include 
>I got some requests on this but it is a lot of work do it rigth
>with current implementation..

But wouldn't it be possible to perform normal table updates from
within a schema transaction?

I haven't followed the complete thread, but it does seem as if
schema_transaction calls mnesia:transaction/1, and that mnesia_tm.erl
doesn't really care if schema transactions are combined with other

My mnesia_schema patch in the rdbms contrib exports
mnesia_schema:schema_transaction/1, and has a few hacks to support
multiple calls to write_table_property/2 within one schema
transaction. You could try calling normal table ops within
schema_transaction and see what happens.

Note, though, that schema_transaction can't be called from within a
transaction. If you want to try this, you'd also have to call
create_table a bit differently. Here's an example from some code I've

initialise_class(Class) ->
    {Attrs, TableProps, UserProps} = Class:describe(),
    F = fun() ->
                   Class, table_properties(Attrs, TableProps)),
                rdbms:do_add_properties(UserProps, Class)

create_table(Name, Properties) ->
    Cs = mnesia_schema:list2cs([{name, Name}|Properties]),


>Chandrashekhar Mullaparthi writes:
> > 
> > I can't create a table within a transaction. Why is that?? A comment in
> > mnesia_schema.erl says that a "very special transaction is used when we want
> > to manipulate the schema". Basically what I want to do is:
> > 
> > * Do some checks
> > * Update table_1
> > * create table_2
> > * Make entries in table_2
> > 
> > in one single transaction. I'm failing at step 3.
> > 
> > tia,
> > Chandru
> > 

Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB

More information about the erlang-questions mailing list