Transaction when using WP functions rather than vanilla SQL?

Does WordPress provide a way of rolling back when using, for example, update_post_meta or wp_insert_post?

E.g. I’m inserting a new post and giving it some post meta inside one function:

some_wp_transaction_init_function();

try{
    $post_id = wp_insert_post($args, true);
    update_post_meta($post_id, 'meta_key', 'meta_value');   
}catch(Exception $e){
    some_wp_rollback_function();
}

some_wp_commit_function();

Or do I have to use vanilla SQL, or the $wpdb object?

Thanks

Solutions Collecting From Web of "Transaction when using WP functions rather than vanilla SQL?"

There is no functions in wordpress to handle transactions but you can easily use the $wpdb object to make a simple query to achieve this. The following function will start a transaction and then insert a new user into the database and finally rollback the current transaction. In order to make the transaction permanent you would instead use $wpdb->query('COMMIT');

function test_transaction() {
  global $wpdb;

  // begin transaction
  $wpdb->query('START TRANSACTION');

  $user = array(
    'user_pass' =>  'sample_password',
    'user_login' => 'sample_login',
    'user_email' => 'sample@example.com',
    'first_name' => 'sample_firstname',
    'last_name' => 'sample_lastname',
  );
  $user_id = wp_insert_user($user);

  // roll back everything - e.g remove the new user record from the database
  $wpdb->query('ROLLBACK');
};