mysql 存储过程和触发器

存储过程

-- 声明结束符
-- 创建存储过程
DELIMITER $  -- 声明存储过程的结束符
CREATE PROCEDURE pro_test()    --存储过程名称(参数列表)
BEGIN
    -- 可以写多个sql语句;      -- sql语句+流程控制
    SELECT * FROM employee;
END $  -- 结束 结束符

-- 执行存储过程
CALL pro_test();   -- CALL 存储过程名称(参数);

-- 删除存储过程
DROP PROCEDURE pro_test;

参数:
IN:   表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,既可以输入功能,也可以输出功能

案例:


drop procedure if exists lopp;
create procedure lopp()

BEGIN
FOR idx IN 1 .. 1000
LOOP
INSERT INTO my_tab VALUES ('A' || idx);
END LOOP;
COMMIT;
dbms_stats.gather_table_stats(ownname => USER,
tabname => 'MY_TAB',
cascade => TRUE);
END;

 

触发器:

需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据

CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW    -- 当往员工表插入一条记录时
     INSERT INTO test_log(content) VALUES('员工表插入了一条记录');

 

posted @ 2017-11-21 11:31  雨落知音  阅读(266)  评论(0编辑  收藏  举报