比如:现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入一条老师数据,再向学生表中插入学生数据。
CALL sp_add_student( 'S20170091', '杨艳', '女', '2003-04-09', 15, 'G0206', 89.23, 'T0021' );
如果有多个学生的数据需要插入,则需要多次调用该存储过程;可否不开发存储过程,在向student表插入(INSERT)数据前,后台自动判断并插入老师数据?
触发器:一种与表操作有关的数据库对象,当触发器所在表上出现指定事件(新增、修改、删除数据)时,将调用该对象,即表的操作事件触发表上的触发器的执行。
比如:现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入一条老师数据,再向学生表中插入学生数据。
触发器的创建:使用关键字CREATE TRIGGER
CREATE TRIGGER tri_add_student BEFORE INSERT ON student FOR EACH ROW BEGIN IF NOT EXISTS(SELECT 1 FROM teacher WHERE teacher_id = new.teacher_id) THEN INSERT INTO teacher(teacher_id) VALUES (new.teacher_id); END IF; END;
INSERT INTO student VALUES( 'S20170092', '李文', '女', '2002-11-19', 16, 'G0206', 55.32, 'T0022' );
按事件类型分:
按执行先后分:
NEW与OLD:
触发器执行时的异常情况:
触发器的删除:使用关键字DROP TRIGGER
如:DROP TRIGGER tri_add_student;
优点:
缺点:
到此这篇关于SQL触发器定义与使用的文章就介绍到这了,更多相关SQL触发器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
编程 | 2023-02-24 21:36
编程 | 2023-02-21 12:51
编程 | 2023-02-21 12:47
编程 | 2023-02-21 00:15
编程 | 2023-02-21 00:08
编程 | 2023-02-20 21:46
编程 | 2023-02-20 21:42
编程 | 2023-02-20 21:36
编程 | 2023-02-20 21:32
编程 | 2023-02-20 18:12
网友评论