mysql> CREATE PROCEDURE p () -> BEGIN -> /* このプロシージャは何も行いません */ <-- -> 影響を受ける行は 0 です0.00 秒)
場合によっては、サンプル内の「mysql>」および「->」システム表示を削除します。コードを mysql クライアント プログラムに直接コピーできます (現在読んでいる内容が電子バージョンではない場合)。関連するスクリプトは mysql.com Web サイトからダウンロードできます) すべての例は、Suse 9.2 linux および Mysql 5.0.3 パブリック バージョンでテストされています。この本を読んでいる時点では、Mysql はすでに上位バージョンになっており、Windows、Sparc、HP-UX など、より多くの OS をサポートできるようになりました。したがって、ここでの例はコンピューター上で正常に実行されます。ただし、それでも操作が失敗する場合は、知り合いの経験豊富な Mysql ユーザーに相談すると、より良いサポートと支援が得られます。 トリガーの理由 トリガーを使用する理由 以下の理由により、MySQL 5.0 にトリガーのサポートが組み込まれました: MySQL の以前のバージョンのユーザーは、長い間トリガーを必要としてきました。
CREATE TRIGGER <トリガー名> { BEFORE | AFTER } <-- { INSERT | DELETE } ON <テーブル名> ROW <トリガーされた SQL ステートメント>
トリガーには実行時間の設定があり、イベントの発生前または後に設定できます。
3. 構文: イベント構文: Event
CREATE TRIGGER <トリガー名>{ BEFORE | AFTER }
{ DELETE | <-- ON <テーブル名> 各行 <トリガーされた SQL ステートメント>
トリガーされるイベントを設定することもできます。挿入、更新、または削除の実行中にトリガーできます。
4. 構文:テーブル 構文:テーブル
CREATE TRIGGER <トリガー名> { BEFORE | AFTER } { DELETE } ON
< FOR EACH ROW <トリガーされた SQL ステートメント>に特定のテーブル: このテーブルに対して挿入、更新、または削除操作が実行されると、トリガーがアクティブになります。 同じテーブル内の同じイベントに対して 2 つのトリガーを配置することはできません。
5. 構文: 粒度 構文: ( : (ステップサイズ) トリガー間隔
CREATE TRIGGER
{ BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON ; FOR EACH ROW <-- <トリガーされた SQL ステートメント>
トリガーの実行間隔: FOR EACH ROW 句は、テーブル全体に対して 1 回ではなく、1 行おきにアクションを実行するようにトリガーに通知します
6. 構文: ステートメントの構文: ステートメント
CREATE TRIGGER <トリガー名>
{ BEFORE | AFTER } { DELETE } ON
FOR EACH ROW<トリガーされた SQL ステートメント< トリガーには、トリガーされる SQL ステートメントが含まれます。ここでのステートメントは、複合ステートメントを含む任意の正当なステートメントにすることができますが、ここでのステートメントには、関数
権限
と同じ制限が適用されます。作成するには、かなりの権限が必要です。トリガー (CREATE TRIGGER)。すでに Root ユーザーであれば、これで十分です。SQL 標準とは異なりますので、できるだけ早く標準に変更できることを願っています。 MySQL では、CREATE TRIGGER という新しい権限が表示される可能性が高く、次の方法でそれを付与します:
GRANT CREATE TRIGGER ON
TO ; 権限を取り消すこともできます。次のように:
REVOKE CREATE TRIGGER ON
FROM ; OLD 列と NEW 列の参照古い列と新しい列の識別 トリガーの SQL ステートメント内、テーブル内の任意の列を関連付けることができますが、列の名前だけを使用して列を識別することはできません。列の新しい名前が存在する可能性があるため、システムが混乱します (これは変更したいものである可能性があります)。アクションは列名を変更することである可能性があります)、列の古い名前が存在するため、それを識別するには次の構文を使用する必要があります: "NEW . column_name" または "OLD . column_name" これは技術的には (NEW | OLD . column_name) 遷移変数 (「遷移変数」) として新しい列名と古い列名が作成されます。
INSERT ステートメントの場合は NEW のみが有効であり、DELETE ステートメントの場合は OLD のみが有効であり、UPDATE ステートメントは NEW と OLD を同時に使用できます。以下は UPDATE で NEW と OLD を同時に使用する例です。