データ変更操作は MySQL で自動的に送信されますか?

WBOY
リリース: 2024-03-15 14:03:04
オリジナル
393 人が閲覧しました

データ変更操作は MySQL で自動的に送信されますか?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート