コアポイント
mysqlトリガーとは何ですか?
トリガーはMySQLバージョン5.0.2で導入され、開発者としての仕事を簡素化するのに役立つMySQLの追加機能の1つにすぎません。それらは、テーブルでアクションの前またはアクション(挿入、更新、削除)を自動的に呼び出します。トリガーを作成するには、適切な権限が必要です。 MySQL 5.1.6の前には、スーパー許可が必要でしたが、5.1.6ではこれが変更され、トリガー許可が必要でした。通常、共有ホスティング計画では、簡単に乱用されるため、スーパーは許可されません。そのため、(仮想)専用サーバーやローカルホストなど、より多くのアクセス許可があるため、サーバーでのみ使用できる場合があります。 mysqlバージョン。トリガーに関する他のクイック指示を以下に示します:トリガーの基本的な構文を元のフォームに分解して、次のように見てみましょう。
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName FOR EACH ROW BEGIN #action(s) to perform END
トリガーを実際の状況に適用します
トリガーは多くの場合非常に役立ちます。よく知られている使用法は、外国の鍵を使用していないときに時代遅れのレコードの削除をトリガーすることにより、テーブルのセットの完全性を維持することです。また、新しい挿入/削除、データベース内のデータの変更を記録する、他のテーブルと同期するなど、統計テーブルを自動的に増加または削減するために使用することもできます。この記事では、それらを使用していくつかの計算を処理します。これは、ホールを1時間あたり30ポンドで賃貸する会社がある場合です。彼らは、ホールで開催された各イベントの名前、開始、終了時間を記録し、収入表で支払う時間と費用を計算します。イベントの名前と開始時間が最初にイベントテーブルに挿入されてロビーを予約すると、イベントが終わった後にのみ、レンタルコストがその行に更新されます。イベントの期間(数分)を計算する必要があります。ここで、開始時間は終了時間から差し引かれ、レンタル料金は合計時間に0.5(1時間あたり30ポンド、あたり50ペンス)を掛けることで計算されます。分)。 PHPを使用して、イベント情報を更新するときにイベントの期間と費用の計算を実行することができます(挿入されたデータを選択し、期間とレンタル費用を計算してから、収益リストを挿入または更新するか、トリガーを使用してこのプロセスを自動化して減らすことができます。いくつかのPHPコード。 2つの基本テーブルを設定し、イベントに仮想サブスクリプションデータを挿入して操作を開始しましょう。2つのテーブルを設定した後、CostCalcという名前のトリガーを作成し続けることができます。トリガーは、イベントテーブルで更新が発生した後に発火するように設定され、前述の計算を実行します。次に、収益リストを挿入または更新します(既存のイベントIDが設定されている場合)。
CREATE TABLE events ( id INTEGER NOT NULL AUTO_INCREMENT, event_name VARCHAR(50) NOT NULL, event_start TIMESTAMP NOT NULL DEFAULT 0, event_end TIMESTAMP NOT NULL DEFAULT 0, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE revenue ( id INTEGER NOT NULL AUTO_INCREMENT, event_id INTEGER NOT NULL, hire_time INTEGER NOT NULL, hire_fees FLOAT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE, UNIQUE (event_id) )ENGINE=INNODB; INSERT INTO events VALUES (NULL, 'Birthday Party', '2012-11-08 14:30:00', 0), (NULL, 'Wedding', '2012-12-02 13:00:00', 0);
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName FOR EACH ROW BEGIN #action(s) to perform END
トリガー(イベントや保存されたルーチンに似ています)を作成する場合、最初に行う必要があることは、トリガーの終了を表す新しいデリミターを指定することです。これは、Delimiterキーワードを使用して行われ、その後にカスタムシンボル(またはシンボル)が続き、MySQLではなく、全体としてトリガーを実行する必要があります。次に、トリガーの名前、その時間、イベント、およびトリガーされるように設定されるテーブルを指定します。この例では、更新されたステートメントが発生した後、トリガーの作業時間を設定します。これは、更新が成功した後にのみトリガーを実行したいからです。次に、トリガーの機能に対応するために、begin ... end化合物ステートメントを使用します。トリガーの本体は、最初に行と時間の2つの変数を宣言します。イベントテーブルから行数を選択します。ここでは、IDは変更されたばかりの行を参照し、Event_startとEvent_end Timesの1つ(または2つ)が変更され、Event_End時間はゼロに等しくありません。これは、レンタル料金はこれらの変更を通してのみ計算できるため、損益計算書にアクションが必要かどうかを明確にするためです。時間と費用を計算できることがわかったら、時間変数を列の最初から最後まで数分数に等しく設定します。この数値に0.5を掛けることで、レンタルコストを取得することもできます。 event_id列は一意であるため、イベントテーブルに対応するIDは1つだけです。 MySQLステートメントでは、古いキーワードと新しいキーワードが、上記のSelect StatementおよびTime変数値の式の式で使用されていることに気付くかもしれません。これらの2つのキーワードの使用は、あなたの状況でのイベントと、トリガーがトリガーされるときに依存します。
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName FOR EACH ROW BEGIN #action(s) to perform END
最初にイベントハンドラークラスを作成します。ここで、プロパティ$ DBは、コンストラクターメソッドによって設定されたPDOクラスのインスタンスを保持するように定義されています。次に、3つのパラメーターが定義されているUpdateEvent()メソッドを作成します。最初のパラメーターは、イベントテーブルで更新する列を指定し、名前、開始、終了の3つの値のいずれかを許可します。 2番目のパラメーターは、挿入する値または更新された列の現在の値を保持します。列名が有効であることを確認した後、パラメーター化されたクエリを使用してテーブルを照会し、最後に行が更新されているかどうかを確認します。クラスを作成した後、私たちはそれを呼び続けます。 PDOオブジェクトのインスタンスをパラメーターとしてEventHandlerクラスに渡します。 updateEvent()メソッドは、異なる値で4回呼び出され、トリガーがイベントテーブルで行われた更新にどのように反応するかを示します。最初の2つの更新では、トリガーが行を挿入または更新することはありません。イベント期間とレンタル料金を計算するために必要な情報がまだないためです。私たちがしたのは、イベント名を更新し、開始時間を2日間遅らせることだけでした。ただし、次の2つの更新では、最初の更新で終了時間を定義するため、トリガーの機能が必要になります。2番目のアップデートでは、1時間後の終了時間を再定義し、期間の変化になり、レンタルコストも変更されます。これは、テーブルを作成するときにテーブルに制約を課し、イベントIDごとに1つのレコードしか持てないため、置換ステートメントが必要な場所です。
結論
MySQLトリガーは、適切に使用すると、Webサイトのパフォーマンスにプラスの影響を与えるだけでなく、そのような操作を処理するために多くのPHPコードを作成することも避けてください。私のプロジェクトと同じように、あなたがあなたのプロジェクトで役立つと思うことを願っていますので、トリガーを大胆に使用してください! Fotoliaの写真 < mySQLトリガーを使用した運用の自動化に関するFAQ mysqlトリガーとは何ですか?それはどのように機能しますか?
mysqlトリガーは、テーブルで発生するイベント(挿入、更新、削除など)に応じて自動的に呼び出される保存プログラムです。トリガーは、データベース内の情報の整合性を維持するために使用され、特定の操作がテーブルで発生したときに自動的に呼び出されます。それらはイベントの前後に実行できます。 mysqlトリガーを作成する方法は?
mySQLトリガーからPHPスクリプトを呼び出すことはできますか?
mysqlトリガーの構文は何ですか?
CREATE TABLE events ( id INTEGER NOT NULL AUTO_INCREMENT, event_name VARCHAR(50) NOT NULL, event_start TIMESTAMP NOT NULL DEFAULT 0, event_end TIMESTAMP NOT NULL DEFAULT 0, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE revenue ( id INTEGER NOT NULL AUTO_INCREMENT, event_id INTEGER NOT NULL, hire_time INTEGER NOT NULL, hire_fees FLOAT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE, UNIQUE (event_id) )ENGINE=INNODB; INSERT INTO events VALUES (NULL, 'Birthday Party', '2012-11-08 14:30:00', 0), (NULL, 'Wedding', '2012-12-02 13:00:00', 0);
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName FOR EACH ROW BEGIN #action(s) to perform END
mysqlトリガーの制限は何ですか?
mysqlトリガーをデバッグする方法は?
mysqlトリガーはストアドプロシージャを呼び出すことができますか?
mysqlトリガーを削除する方法は?
MySQLトリガーをデータ検証に使用できますか?
CREATE TABLE events ( id INTEGER NOT NULL AUTO_INCREMENT, event_name VARCHAR(50) NOT NULL, event_start TIMESTAMP NOT NULL DEFAULT 0, event_end TIMESTAMP NOT NULL DEFAULT 0, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE revenue ( id INTEGER NOT NULL AUTO_INCREMENT, event_id INTEGER NOT NULL, hire_time INTEGER NOT NULL, hire_fees FLOAT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE, UNIQUE (event_id) )ENGINE=INNODB; INSERT INTO events VALUES (NULL, 'Birthday Party', '2012-11-08 14:30:00', 0), (NULL, 'Wedding', '2012-12-02 13:00:00', 0);
以上がMySQLトリガーを使用したアクションオートメーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。