# maxdb_rollback

# maxdb::rollback

(PECL maxdb >= 1.0)

maxdb_rollback -- maxdb::rollback — Rolls back current transaction

### 说明

过程化风格

maxdb_rollback ( resource `$link` ) : bool

面向对象风格

maxdb::rollback ( void ) : bool

Rollbacks the current transaction for the database specified by the `link` parameter.

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

### 范例

Example #1 面向对象风格

    <?php
    $maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

    /* check connection */
    if (maxdb_connect_errno()) {
       printf("Connect failed: %s\n", maxdb_connect_error());
       exit();
    }

    /* disable autocommit */
    $maxdb->autocommit(FALSE);

    $maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");
    $maxdb->query("INSERT INTO temp.mycity SELECT * FROM hotel.city");

    /* commit insert */
    $maxdb->commit();

    /* delete all rows */
    $maxdb->query("DELETE FROM temp.mycity");

    if ($result = $maxdb->query("SELECT COUNT(*) FROM temp.mycity")) {
       $row = $result->fetch_row();
       printf("%d rows in table mycity.\n", $row[0]);
       /* Free result */
       $result->close();
    }

    /* Rollback */
    $maxdb->rollback();

    if ($result = $maxdb->query("SELECT COUNT(*) FROM temp.mycity")) {
       $row = $result->fetch_row();
       printf("%d rows in table mycity (after rollback).\n", $row[0]);
       /* Free result */
       $result->close();
    }

    /* Drop table myCity */
    $maxdb->query("DROP TABLE temp.mycity");

    $maxdb->close();
    ?>

Example #2 过程化风格

    <?php
    $link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

    /* check connection */
    if (maxdb_connect_errno()) {
       printf("Connect failed: %s\n", maxdb_connect_error());
       exit();
    }

    /* disable autocommit */
    maxdb_autocommit($link, FALSE);

    maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");
    maxdb_query($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

    /* commit insert */
    maxdb_commit($link);

    /* delete all rows */
    maxdb_query($link, "DELETE FROM temp.mycity");

    if ($result = maxdb_query($link, "SELECT COUNT(*) FROM temp.mycity")) {
       $row = maxdb_fetch_row($result);
       printf("%d rows in table mycity.\n", $row[0]);
       /* Free result */
       maxdb_free_result($result);
    }

    /* Rollback */
    maxdb_rollback($link);

    if ($result = maxdb_query($link, "SELECT COUNT(*) FROM temp.mycity")) {
       $row = maxdb_fetch_row($result);
       printf("%d rows in table mycity (after rollback).\n", $row[0]);
       /* Free result */
       maxdb_free_result($result);
    }

    /* Drop table myCity */
    maxdb_query($link, "DROP TABLE temp.mycity");

    maxdb_close($link);
    ?>

以上例程的输出类似于：

    0 rows in table mycity.
    25 rows in table mycity (after rollback).

### 参见

- maxdb_commit() - Commits the current transaction
- maxdb_autocommit() - Turns on or off auto-commiting database modifications