sql 怎样创建触发器,分别实现增加、删除学生和修改学生班级信息时自动修改相应班级学生人数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎样创建触发器,分别实现增加、删除学生和修改学生班级信息时自动修改相应班级学生人数相关的知识,希望对你有一定的参考价值。
例子:
DROP TRIGGER IF EXISTS t_afterdelete_on_tab1;
CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
--内容主体部分
delete from tab2 where tab2_id=old.tab1_id;
END;
CREATE TRIGGER <触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和mysql中其他对象的命名方式基本相象.
BEFORE | AFTER --触发器有执行的时间设置:可以设置为事件发生前或后。
INSERT | UPDATE | DELETE --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
ON <表名称> --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。
FOR EACH ROW --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句> --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。
在SQL2008中我要创建个更新(UPDATE)触发器
实现的功能:如果更新的是主键就调用触发器,如果不是主键就不调用触发器,直接更新
说得详细点
两个表,一个是学生,里面有学生ID,学生姓名,学号。另一个是课程班学生,里面有课程班ID,学生ID,成绩
要求:当更新学生表里的学生ID时,会调用触发器,更新课程班里的学生ID。 如果更新的时学生表里的其他,则就直接更新,不用触发器
IF :NEW。主键 ! = :OLD 。主键 THEN --如果主键更新了
执行触发器
ELSE
NULL
END IF;
完整过程
CREATE OR REPLACE TRIGGER 名字
BEFORE UPDATE
ON 表名
FOR EACH ROW
DECLARE
自定义字段
BEGIN
IF update THEN
IF :NEW。主键 ! = :OLD 。主键 THEN --如果主键更新了
执行触发器
ELSE
NULL
END IF;
END IF;
END;
END 触发器名称
信息来源:饭客网络
以上是关于sql 怎样创建触发器,分别实现增加、删除学生和修改学生班级信息时自动修改相应班级学生人数的主要内容,如果未能解决你的问题,请参考以下文章