delimiter // # 修改结束符为//
create trigger trigger_name {t_time} {t_order} on table_1 for each row
begin
{执行命令,可以多行}
end //
delimiter ;
# 例:
# 创建
delimiter // # 修改结束符为//
create trigger trigger_name after insert on table_1 for each row
begin
insert into table_2(col) values (new.col_1);
end //
delimiter ;
# 使用
insert into table_1(col_1) values (2);
new:是新添加的数据,作用范围是insert,update
old:是旧的数据,作用范围是drop,update
select {内置函数};
# 定义函数
delimiter // # 修改结束符为//
create function
f1(data1 int,
data2 char)
return int # 设置输入参数以及返回参数
begin
declare num1 int; # 定义变量以及类型
declare num1 int default 0; # 定义变量以及初始化变量
set num2=1+2; # 计算操作
return(num) # 返回数据
end //
delimiter ;
# 使用函数
select f1(5, 's');
存储过程与函数的区别在于,函数只对参数进行运算,存储过程可以使用SQL语句
delimiter // # 修改结束符为//
create procedure
p(in v1 int, # 只能输入使用
out v2 int, # 只能输出
inout v3 int) # 两者皆可
begin
set v2=123; # 设置输出的数据,只能是out、inout
select * from table_name where id=v1; # 使用输入参数,只能是in、inout
end //
delimiter ;
# 使用及传入参数
set @v2=222;
set @v3=333;
call p(1,v2,v3); # 没有参数也需要括号
select @v2;
delimiter // # 修改结束符为//
create procedure
p(out flag int)
begin
declare exit handler for sqlexception
begin
set flag=0; # 操作失败返回
rollback;
end;
start transaction;
# 执行的操作
commit;
set flag=1; # 操作完成返回
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
if /*条件*/ then
# 语句1;
else
# 语句2;
end if;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
case # v1 变量
when 1 then
# 语句1;
when 2 then
# 语句2;
else
# 语句3;
end case;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
while /*条件*/ do
# 语句;
end while;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
repeat
# 语句;
until # 条件
end repeat;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
loop_name:loop
# 语句;
if 结束条件 then
leave loop_name;
end if;
end loop;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p()
begin
declare v1 int; # 变量1
declare v2 char(10); # 变量2
declare flag int default False; # 结束标志
declare cursor_name cursor from select data1,data2 from table_name; # 定义游标
declare continue handler for not found set flag=True;
open cursor_name; # 使用游标
loop_name:loop
fetch cursor_name into v1,v2;
# 操作
if flag then
leave loop_name;
end if;
end loop;
close cursor_name;
end //
delimiter ;
delimiter // # 修改结束符为//
create procedure
p(in v1 int)
begin
set @data1 = v1;
prepare order_name from "select v1 from table_name where v1=?";
execute order_name using @data1;
deallocate prepare order_name;
end //
delimiter ;
本文地址:https://blog.csdn.net/qq_35560000/article/details/107540020
如对本文有疑问, 点击进行留言回复!!
在Ubuntu/Linux环境下使用MySQL开放/修改3306端口和开放访问权限
ORM框架Peewee(高级连接)peewee连接池、主从、重连、ssh连接
记一次Mysql主从复制延迟,Waiting for dependent transaction to commit
网友评论