存储函数,是有返回值的存储过程,参数只能是in
存储函数有弊端,必须有返回值。存储函数能做的,存储过程都能做。
(1) 创建存储函数
create function 存储函数名(参数名 参数类型) // 参数无需指定in默认就是
returns 返回值类型
begin
sql..
return ...;
end;
(2) 调用存储函数
select 存储函数名;
触发器是,与表有关的数据在增删改之前或之后执行的语句集合。
Mysql只支持行级触发器(影响一行数据执行一次)
(1) 属性new与old
insert只有new属性
delete只有old属性
update 既有new 又有old
(2) 创建触发器
create trigger 触发器名
before/after insert/update/delete // 之前/之后 插入/更新/删除,各选一个,例如 before insert
on 表名 for each row // 行级触发器
begin
sql..
end;
(3) 查看触发器
show triggers;
(4) 删除触发器
drop trigger [schema名.]触发器名;
(5) 示例
create grigger td_user_update_trigger
after update // 更新后执行触发器
on td_user for each row // td_user表的行级触发器
begin
insert into tb_log values(old.id, new.id); // old.id 更新前id,new.id更新后id
end;