zoukankan      html  css  js  c++  java
  • 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('员工表插入了一条记录');
  • 相关阅读:
    洛谷P2886 [USACO07NOV]Cow Relays G
    CF1344F Piet's Palette
    CF1344E Train Tracks
    CF1342F Make It Ascending
    LOJ6049 拍苍蝇
    test20200430 最长路径
    LG1742 最小圆覆盖 和 LOJ6360 复燃「恋之埋火」
    LOJ6358 前夕
    LOJ6485 LJJ学二项式定理
    LOJ2882 两个人的星座
  • 原文地址:https://www.cnblogs.com/isuben/p/7872370.html
Copyright © 2011-2022 走看看