1、什么是触发器并写出创建触发器的语法
触发器:
触发器(trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( INSERT,DELETE, UPDATE)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。例如,当学生表中增加了一个学生的信息时,学生的总数就应该同时改变。因此可以针对学生表创建一个触发器,每次增加一个学生记录时,就执行一次学生总数的计算操作,从而保证学生总数与记录数的一致性。
创建触发器语法:
CREATE TRIGGER 触发器名称 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW
BEGIN
触发器程序体;
END
----------------------------------------------------------
说明:
<触发器名称> 最多64个字符,它和MySQL中其他对象的命名方式一样
{ BEFORE | AFTER } 触发器时机,在触发事件之前(BEFORE)或之后(AFTER)
{ INSERT | UPDATE | DELETE } 触发的事件INSERT(创建)、 UPDATE(更新)、 DELETE(删除)
ON <表名称> 标识建立触发器的表名,即在哪张表上建立触发器
FOR EACH ROW 触发器的执行间隔:
FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次
<触发器程序体> 要触发的SQL语句:可用顺序,判断,循环等语句实现一般程序需要的逻辑功能
2、创建INOUT参数类型存储过程(查询指定班级的学生人数)
CREATE PROCEDURE fun2 (IN p1 INT,OUT p2 INT)
BEGIN
SELECT COUNT(*) INTO p2 FROM student WHERE GradeId = p1;
END;
//调用
CALL fun2(1,@a);
SELECT @a;
3、创建有参有返回值的存储函数(根据学生名返回学号)
CREATE FUNCTION myf2(sName varchar(20))
RETURNS INT
BEGIN
DECLARE stuNo INT;
SELECT StudentNo INTO stuNo from student WHERE StudentName = sName;
RETURN stuNo;
END;