edmiStartModelsWriteTransaction


 

EdmiError edmiStartModelsWriteTransaction(SdaiModel *modelIds);

Reserves exclusive write privileges to an arbitrary number of models. Any number of clients may open a model for write access at the same time. This is possible because all persistent changes within models must be done within a model write transactions. Conflicts are avoided by only allowing one open model write transaction within each model at any point of time. If a client attempts to start a model write transaction on a selected group of models while an other client has already reserved exclusive write privileges for him self by starting a model write transaction within one or more of these models, the first client will have to wait until the ongoing transaction is either committed or aborted. In order to start a model write transaction on a selected group of models, all the models must be opened for write. Ordinary transactions may be nested within a model write transaction with edmiStartTransaction. However, model write transactions may not be nested within ordinary transactions. Closing a model write transaction is done by one of the following EDMInterface operations; edmiCommitTransaction, edmiAbortTransaction, edmiCommitAllTransactions, edmiAbortAllTransactions

Arguments


TypeNameComment
SdaiModelmodelIdsZero terminated buffer of modelIds.  Numeric modelIDs uniquely identify data models in the EDMdatabase .  The modelID is returned from the functions: sdaiCreateModel , sdaiCreateModelBN , sdaiOpenModelBN , edmiGetModel , edmiGetModelBN , sdaiGetInstanceModel

Return Value


Error rendering macro 'excerpt-include' : User 'null' does not have permission to view the page 'US:_r_EDMInterface'.

Options


 

Example


 

  EdmiError rstat;
 SdaiModel modId[3];
 . . .
 modId[0] = edmiGetModelBN("ourRepository", "myModel");
 modId[1] = edmiGetModelBN("ourRepository", "yourModel");
 modId[2] = 0;
  
 /* Start outer model write X-action */
 if (edmiStartModelsWriteTransaction(modId)) {
 printf("\nError %d in edmiStartModelsWriteTransaction: %s, rstat,
 edmiGetErrorText(rstat)); 
 goto error; 
 }
 /* Nested X-actions */
 edmiStartTransaction();
 . . .
 if (rstat) {
 edmiAbortTransaction(); 
 } else {
 edmiCommitTransaction(); 
 }
 /* Commit outer model write X-action */
 edmiCommitTransaction();
 . . .

 

See also

Filter by label

There are no items with the selected labels at this time.