MySQL のデータ変更操作は、デフォルトで自動的に送信されます。つまり、UPDATE、INSERT、DELETE などのデータ変更操作が実行されるたびに、その操作はすぐに有効になり、データベースに送信されます。この利点は、データの一貫性と耐久性を確保できることですが、場合によっては特定のリスクももたらします。たとえば、複数の変更操作を実行する場合、各操作をすぐに送信するのではなく、すべての操作を一度に送信することができます。
MySQL は、データ変更操作の送信を手動で制御できるトランザクションの概念を提供し、それにより複数の操作を一度に送信したり、ロールバックしたりすることができます。
以下では、具体的なコード例を使用して、MySQL でのデータ変更操作の自動送信機能と、手動で送信を制御する方法を示します。
まず、次の構造を持つ「test_table」という名前のテーブルを作成します。
CREATE TABLE test_table ( id INT 主キー、 名前 VARCHAR(50) );
次に、いくつかのテスト データを挿入します。
INSERT INTO test_table (id, name) VALUES (1, 'Alice'); INSERT INTO test_table (id, name) VALUES (2, 'Bob'); INSERT INTO test_table (id, name) VALUES (3, 'Charlie');
次に、単純な UPDATE ステートメントを実行してデータを変更し、自動送信の効果を確認してみます:
UPDATE test_table SET name = 'David' WHERE id = 1; SELECT * FROM test_table;
上記のステートメントを実行すると、データが正常に変更されたことがわかり、変更操作が自動的に送信されたことがわかります。
次に、トランザクションを設定して、データ変更操作の送信を手動で制御します。
START TRANSACTION; UPDATE test_table SET name = 'Eve' WHERE id = 2;
ここでは、START TRANSACTION
を使用してトランザクションを開始し、データ更新操作後に一時的にコミットしません。
次に、データのクエリを試行します。この時点では、変更は送信されていないため、クエリは以前のデータを返します:
SELECT * FROM test_table;
次に、これを手動で送信します。トランザクション:
COMMIT;
上記のステートメントを実行した後、データを再度クエリすると、データが正常に変更されたことがわかります。
さらに、前の変更操作を元に戻してトランザクションをロールバックしたい場合は、ROLLBACK
コマンドを使用できます。
START TRANSACTION; UPDATE test_table SET name = 'Grace' WHERE id = 3; SELECT * FROM テストテーブル; ロールバック; SELECT * FROM test_table;
上記の例では、ROLLBACK
を実行した後、データが変更されていないことがわかり、トランザクションが正常にロールバックされたことを示しています。
上記の例から、MySQL ではデータ変更操作がデフォルトで自動的にコミットされますが、コミットまたはロールバック操作はトランザクションを通じて手動で制御でき、より柔軟なデータ操作方法を実現できることがわかります。
以上がデータ変更操作は MySQL で自動的に送信されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。