sql >> データベース >  >> RDS >> Mysql

MySQLトリガーの使用

    この記事では、A2ホスティングアカウントでMySQLトリガーを作成して使用する方法について説明します。トリガーは、テーブルに関連付けられた事前定義されたルールです。これらは、SQLステートメントが関連するテーブルからデータを挿入、更新、または削除する前または後に呼び出す(「トリガー」)ことができます。

    さまざまなシナリオでトリガーを使用できます。たとえば、トリガーを使用して、行が更新されたときに特定の値を自動的に変更できます。または、行が削除されるたびに実行する一連のアクションを指定することもできます。可能性はほぼ無限大です。

    トリガーの作成と使用

    MySQLを使用する任意のA2ホスティングサーバーでトリガーを作成して使用できます。

    テストデータベースの設定

    トリガーの動作の基本的な例を示すために、テスト目的でデータベースを作成することから始めましょう。次のSQLステートメントで、 usernameを置き換えます。 アカウントのユーザー名:

    CREATE DATABASE username_test;
    以前のSQLコマンド(および次のSQLコマンド)は、MySQLツールを使用してコマンドラインから実行するか、phpMyAdminを使用してWebブラウザーで実行できます。

    phpMyAdminを使用している場合は、名前 username をクリックします _testを使用して、データベースを選択します。それ以外の場合、mysqlコマンドラインプログラムを使用している場合は、次のSQLステートメントを入力します。

    USE username_test;

    次に、ユーザー名でテーブルを作成します _test 製品という名前のデータベース 。これを行うには、次のSQLステートメントを実行します。

    CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

    次のSQLステートメントは、いくつかのサンプルデータを製品に追加します。 テーブル:

    INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
    >

    これで、テーブルのトリガーを作成する準備が整いました!

    トリガーの作成

    updateProductPriceという名前のトリガーを作成しましょう 。この特定のトリガーは、製品がアクティブになるたびにアクティブになります テーブルが更新されます。このイベントが発生すると、トリガーは各行をチェックして、製品のコスト( prod_cost )があるかどうかを確認します。 )値が変更されています。そうである場合、トリガーはアイテムの新しい価格( prod_price )を自動的に設定します )アイテムの新しいコストの1.40倍(つまり、40%のマークアップ)。

    このトリガーを作成するには、次のMySQLステートメントを実行します。

    DELIMITER $$
    CREATE TRIGGER `updateProductPrice`
    BEFORE UPDATE ON `products`
    FOR EACH ROW
    BEGIN
      IF NEW.prod_cost <> OLD.prod_cost
        THEN
          SET NEW.prod_price = NEW.prod_cost * 1.40;
      END IF ;
    END$$
    DELIMITER ;
    区切り文字 これらのステートメントの先頭にあるコマンドは、MySQLがトリガー定義をすぐに処理するのを防ぎます。 区切り文字 これらのステートメントの最後にあるコマンドは、処理を通常に戻します。 トリガーの使用

    updateProductPrice これで、製品の行がいつでも自動的にトリガーを呼び出す準備ができました。 テーブルが更新されます。たとえば、次のSQLステートメントを実行して、基本ウィジェットのコストを変更します。

    UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

    このSQLステートメントを実行すると、トリガーもアクティブになり、新しいコストに比例して基本ウィジェットの価格が自動的に更新されます。これを確認するには、次のSQLステートメントを実行します。

    SELECT * FROM products;

    このステートメントは、次の結果を返します。

    +---------+--------------+-----------+------------+
    | prod_id | prod_name    | prod_cost | prod_price |
    +---------+--------------+-----------+------------+
    |       1 | Basic Widget |         7 |        9.8 |
    |       2 | Micro Widget |      0.95 |       1.35 |
    |       3 | Mega Widget  |     99.95 |        140 |
    +---------+--------------+-----------+------------+
    3 rows in set (0.00 sec)
    

    ご覧のとおり、 updateProductPrice トリガーは、新しいコスト(7.00)に基づいて、基本ウィジェットの価格(9.80)を自動的に更新しました。これはトリガーが実行できることの簡単な例ですが、独自のデータベースでも同じ手法を使用できます。可能性はほぼ無限です。

    詳細情報
    • MySQLトリガーの詳細については、http://dev.mysql.com/doc/refman/5.0/en/triggers.htmlにアクセスしてください。
    • CREATE TRIGGERの詳細については ステートメントについては、http://dev.mysql.com/doc/refman/5.0/en/create-trigger.htmlにアクセスしてください。

    1. データファイルとStatisticaのマージ、パート2

    2. Partition ByまたはMaxの使用方法は?

    3. SQLServerのトリガーのリストを返す

    4. Sqlite3は複数の行を順番に挿入していません