突っ走り書き

見せるほどのものでは..

MySQLの復習@9日目

ストアドプロシージャの作成と実行

# デリミタを ; から // に変更
delimiter //

# プロシージャ定義
create procedure [proc]
begin ... end //

# デリミタを ; に戻す
delimiter ;

# 呼び出し
call [proc];

# 引数ありのプロシージャ定義
create procedure [proc]([arg] [type]...)
begin ... end //

# n歳以上のレコードを表示
create procedure over(n int)
begin
select * from tb where age >= n;
end //

# 20歳以上のレコードを表示
call over(20)

その他ストアドプロシージャ関連のコマンド

# 内容を確認
show create procedure [proc];

# プロシージャの削除
drop procedure [proc];

ストアドファンクションの作成と実行

delimiter //
create function [func] ([arg] [type], ...) returns [type]
begin ... end //
delimiter ;

# 呼び出しは call でなく select で
 select [func];

# 変数の宣言(delete)と代入(into)
delimiter //
create function avgage() returns double
begin
declare avgage double;
select avg(age) into avgage from tb;
return avgage;
end //
delimiter ;

その他ストアドファンクション関連のコマンド

# 内容確認
show create function [func];

# ファンクションの削除
drop function [func];

トリガの作成

# トリガ buckup の作成
# テーブル member からレコードが削除されたら
# buckup_member にそのコピーを残し
# 削除された時間を記録する
create trigger buckup before delete
on member for each row
begin
insert into buckup_member
values(old.id, old.name, old.age, now());
end //

その他トリガ関連のコマンド

# トリガの確認
show triggers;

# トリガの削除;
dorp trigger [trig];