Mysql业务开发操作(触发器篇)

文章介绍了如何使用存储过程进行课程表的插入操作,包括判断课程是否存在。同时,展示了如何定义一个插入学生信息的存储过程,利用函数生成拼音缩写。此外,文章还讨论了不同类型的触发器,如BEFOREINSERT、AFTERUPDATE和AFTERDELETE,用于自动处理学生姓名拼音缩写、维护选课信息和商品库存。
摘要由CSDN通过智能技术生成

1.插入类型的存储过程(判断是否存在型)

/*创建一个存储过程(名字自定),实现课程表的插入,需要判断当前课程名称的课程是否存在
*/
CREATE PROCEDURE insert_course(IN course_name VARCHAR(50), IN credit INT)
BEGIN
    DECLARE course_id INT;
    SELECT 课程id INTO course_id FROM 课程表 WHERE 课程名称 = course_name;
    IF course_id >0 THEN
        SELECT '该课程已存在' AS result;
    ELSE
        INSERT INTO 课程表 (课程名称, 学分) VALUES (course_name, credit);
        SELECT '插入成功' AS result;
    END IF;
END; 

2.定义函数型插入存储过程

/*创建一个存储过程(名字自定),实现学生表的插入,姓名拼音缩写需要调用getstrpy函数实现。
*/
CREATE PROCEDURE insert_student(
    IN p_id INT,
    IN p_num VARCHAR(20),
    IN p_name VARCHAR(20),
    IN p_major VARCHAR(20),
    IN p_grade VARCHAR(10)
)
BEGIN
    DECLARE p_py VARCHAR(100);
    SET p_py = getstrpy(p_name);
    INSERT INTO 学生表 (学生id, 学号, 姓名, 专业, 年级, 姓名拼音缩写)
    VALUES (p_id, p_num, p_name, p_major, p_grade, p_py);
END; 

3.BEFORE INSERT型

/*触发器,当新增学生时自动处理姓名拼音缩写。*/
CREATE TRIGGER trg_姓名拼音缩写
BEFORE INSERT ON 学生表
FOR EACH ROW
SET NEW.姓名拼音缩写 = pysx(NEW.姓名);

4.AFTER UPADTE型

/*触发器,当修改学生时自动处理姓名拼音缩写。*/
CREATE TRIGGER update_pinyin AFTER UPDATE ON 学生表 FOR EACH ROW
BEGIN
    IF NEW.姓名 != OLD.姓名 THEN
        SET NEW.姓名拼音缩写 = pysx(NEW.姓名);
    END IF;
END;

5.AFTER DELETE型

/*在课程表上创建一个触发器,当删除课程信息时自动删除该课程的选课信息。*/
CREATE TRIGGER 删除课程信息触发器
AFTER DELETE ON 课程表
FOR EACH ROW
BEGIN
    DELETE FROM 选课表 WHERE 课程id = OLD.课程id;
END;

6.AFTER INSERT型

/*商品表上触发器,当新增商品时自动在库存表中插入该商品的库存信息(库存数量为0)。*/
CREATE TRIGGER 新增商品触发器
AFTER INSERT ON 商品表
FOR EACH ROW
BEGIN
    INSERT INTO 库存表 (商品id, 库存数量) VALUES (NEW.商品id, 0);
END;

hiahiahia

哦豁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值