カスタム関数は MySQL を拡張する方法であり、使い方は組み込み関数と同じです。
関数を定義するために必要な 2 つの条件: パラメータと戻り値。関数は任意の型の値を返すことができ、これらの型のパラメータを受け取ることもできます。
関数本体について:
関数本体は、正当な SQL ステートメントで構成されます。
関数本体には、単純な SELECT ステートメントまたは INSERT ステートメントを使用できます。
関数本体が構造に準拠している場合は、BEGIN....AND ステートメントでラップされます。
複合構造には、宣言、ループ、制御構造などを含めることができます。
重要: カスタム関数に同じ名前を付けることはできません。グローバル変数を定義するのと同様、変数名に一貫性を持たせることはできません。
構文形式:
create function 函数名(参数列表) returns type(返回值类型) begin --SQL语句 end;
要件: ストアド プロシージャの関数を定義する, 条件を満たすレコードの総数を取得します
実装:
delimiter $ create function fun(countryId int) returns int begin # 定义一个存储总数据条数的变量 declare cum int default 0; # 查询等于传递参数的全部的数据数,然后将其赋值给定义的变量 select count(*) into cum from city where country_id = countryId; # 返回结果值。存储函数必须有返回值 return cum; end $ delimiter ;
構文形式:
select 函数名(参数列表);
注: call キーワードはストアド プロシージャを呼び出すときに使用されますが、MySQL の通常の集計関数を呼び出すのと同じように、ストアド関数を呼び出すときに select を直接使用できます。
select fun(1); # 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可
構文形式
drop [if exists] function fun;
トリガーはテーブルに関連するデータベース オブジェクトであり、insert/update/delete の前後にトリガーで定義された SQL セットをトリガーして実行することを指します。トリガーのこの機能は、アプリケーションがデータベース側でデータの整合性、ログ記録、およびデータ検証を保証するのに役立ちます。
これら 2 つの変数を使用して、操作対象のデータ テーブルのデータを取得できます。
2.2 トリガーの作成
# 構文形式:create trigger(触发器) trigger_name(触发器名称)
before/after insert/update/delete
on tab_name(表名)
[for each row](行级触发器)
begin
trigger_stmt;(触发器的逻辑)
end;
実装:
分析:
トリガーは 1 種類のデータ操作のみを実行でき、追加、変更、削除の操作を同時に完了することはできません。したがって、このログ記録タスクを完了するには、この時点で複数のトリガーを定義する必要があります。
MySQL は行レベルの操作のトリガーであるため、新しいものと古いものにはデータの行全体が保存されます。挿入を実行するトリガーを作成します:
#挿入操作を実行する必要があります。
この時点では、古い変数 変更前のデータは新しい変数に格納され、変更後のデータは新しい変数に格納されます。
削除を実行するトリガーの作成:
現時点で古い変数に保存されている削除対象のデータ
テスト: テストは、次の emp テーブルである必要があります。上記の定義されたトリガーがトリガーされるように操作を実行します。
#2.3 トリガーの削除
構文構造:
drop trigger [schema_name.](数据库名)trigger_name(触发器名);
指定しない場合 schema_name (データベース名)、デフォルトは現在のデータベースです。
2.4 トリガーの表示show Triggers コマンドを実行すると、トリガーのステータス、構文、その他の情報を表示できます。
show triggers;
以上がMySQL で関数とトリガーをカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。