InnoDBストレージエンジンを備えたテーブルがあります。すべてが正しくなったときに挿入プロセスを開始したい。これどうやってするの ?
質問する
405 次
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 に答える