0

InnoDBストレージエンジンを備えたテーブルがあります。すべてが正しくなったときに挿入プロセスを開始したい。これどうやってするの ?

4

2 に答える 2

2

これは、トランザクションをサポートするMySQLiクラスを 使用して簡単に行うことができます。

次に例を示します。

<?php
    $mysqli = new mysqli("example.com", "user", "password", "database");
    $mysqli->autocommit(false);

    $mysqli->query("INSERT INTO test(id) VALUES (1)");
    $mysqli->rollback();

    $mysqli->query("INSERT INTO test(id) VALUES (2)");
    $mysqli->commit();
?>

ここでは、いくつかのドキュメントと例を見つけることができます。

また、フレームワークを使用している場合は、そのドキュメントを確認してください。通常、トランザクションに対する非常に優れた実装とアプローチがあります。

CodeIgniter の非常にスマートなトランザクション アルゴリズムの例を次に示します。

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();

CodeIgniter はトランザクションを自動的に処理し、クエリの 1 つにエラーがある場合は変更を元に戻します。 CodeIgniter のトランザクションへのアプローチ

于 2012-05-19T06:50:01.703 に答える
2

使用している PHP ライブラリに関係なく、次のいずれかのステートメントを使用して、いつでもトランザクションを開始できます。

  • SET autocommit = off
  • BEGIN
  • START TRANSACTION

開始したら、一連の作業を行うことができます。永続的に保存する準備ができたら、コミットを行います。

  • COMMIT

または、進行中の作業を (前のコミット時点まで) 元に戻したい場合は、ロールバックを発行します。

  • ROLLBACK

これらは、mysql の任意の php ライブラリを使用して、通常の SQL ステートメントとして簡単に実行できます。

于 2012-05-19T07:14:02.810 に答える