存储器和触发器区别
:
触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。
当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句
,从而确保对数据的处理必须符合这些SQL语句所定义的规则。
授课表(教师表-课程表):
在这里注意选课表是不需要添加外键约束的,而是用触发器来实现数据库完整性。
触发器设置:
1.当向选课表中插入数据时,检查该行的学号列在学生表中是否存在,授课号列在授课表中是否存在,
如有一项不成立,则不允许插入,并显示存错信息“学生表没有该学号信息或授课表没有该课程号,请仔细检查”
![]()
1.raiserror 函数用于返回用户定义的错误信息并设置系统标志。第2个参数是错误的严重级别;第3个参数表示有关
错误调用状态的信息.
2.rollback表示回滚,不允许插入新行
2.我们可以这样设想,当某个学生退学不读书了,那么他在选修表中的信息也应该被删除.现创建一个触发器,名为"Delete_sc".
如果要删除学生表中的记录,则与该记录学号对应的选修表中的选修记录也一起删除.
插入一条学生信息
![]()
插入该学生的选课信息
![]()

现在假设学号为S004的学生退学了,在Students表中删除该学生所有信息
![]()
在选课表中该学生的选课记录也随学生表信息删除随之删除
![]()
触发器的查看:
--用于查看触发器的一般信息。
sp_help [触发器名称]
--用于显示存储过程的源代码
sp_helptext [触发器名称]
--用于查看指定触发器所引用的表或者指定的表涉及的所有触发器。格式如下:
sp_depends [触发器名称]
sp_depends [表名]
修改触发器:
使用 alter trigger命令修改触发器
例:把触发器Delete_sc 修改为当删除课程表中的记录时,显示"记录已被删除,触发器起到作用"
注:alter trigger的触发器必须先create,不能alter一个不存在的触发器
![]()

重命名触发器
--把触发器 Delete_sc 重命名为"Delete_ssc"
sp_rename Delete_sc,Delete_ssc
删除触发器
--删除触发器"Delete_ssc" drop trigger Delete_ssc
存储器和触发器区别:触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。表创建:学生表:授课表(教师表-课程表):选课表:
在压缩包下有完整的基于Java Web的学生成绩管理系统,设计的数据表、数据库后台代码实现(包括存储过程、触发器、用户自定义函数)、管理系统功能展示页面图片以及系统设计报告。在该系统中有三个权限:管理员、教师和学生。管理员主要实现的功能是添加教师、开设院系和开设课程、添加学生和查询学生;教师主要实现的功能是录入学生成绩、更新学生成绩以及查看所教班级的学生成绩(备注:该老师只能够查看自己所教班级学生的成绩)和教师个人信息;学生主要实现的功能是查看自己所修所有课程的成绩,以及查看个人信息。所开发的学生成绩管理系统,系统界面友好、功能明确,非常适合初学者的学习和使用,欢迎各位朋友前来下载使用。
①在学生个人信息模块,要求:
a.可以查看学生的个人信息,包括学号、姓名、性别、年龄、电话、地址、生日、专业、班级;
b.可以对学生个人信息进行维护,包括添加、修改及删除的操作。
②在老师个人信息模块,要求:
a.可以浏览老师个人信息,包括添加教师号、教师姓名、性别、生日、系别;
b.可以对老师个人信息进行维护,包括添加、修改及删除的操作。
③在授课信息模块,要求:
a.可以查看老师授课信息,包括教师号、课程号、学期;
b.可以对授课信息进行维护,包括添加、修改及删除的操作。
④在课程信息模块,要求:
a.可以查看课程信息,包括课程号、课程名;
b.可以对课程信息进行维护,包括添加、修改及删除的操作。
⑤在选修信息模块,要求:
a.可以查看选修信息,包括学号、课程号、分数、学分、学期;
b.可以对选修信息进行维护,包括添加、修改及删除的操作。
⑥触发器实现选课登记,要保证学生不能选修重复的课程。
⑦创建存储过程统计各学生指定学期选修课程的总学分数。
⑧创建视图查询第一学年,没有被选修的课程。
⑨创建存储过程统计各教师任课的学生人数。
触发器例题
题1:建一个触发器addstudent_trigger, 当用户向Student表中插入一条新的记录时,更新该班级的学生人数。可先创建一个班级表用于统计学生人数。
create trigger addstudent_trigger
after insert on Student
begin
declare c int;
set c = (select stuCount from class);
update class set stuCount = c + 1;
题2 创建一个触发器
当我们对一个表进行数据操作时,需要同步对其它的表执行相应的操作,正常情况下,如果我们使用sql语句进行更新,将需要执行多条操作语句!
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。
创建触发器
在MySQL中创建触发器通过SQL语句CREATE TRIGGER来实现,其语法形式如下:
CR...
CREATE TRIGGER <触发器名> AFTER DELETE ON student
FOR EACH ROW BEGIN
DELETE FROM Grade WHERE stuId=old.stuId;
DELIMITER;
上面是在学生表上建立一个触发器,当从学生表中删除一条记录时,会把...
course_id INT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL,
teacher_name VARCHAR(50) NOT NULL,
credit INT NOT NULL
-- 创建选课表
CREATE TABLE course_selection (
selection_id INT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
selection_time DATETIME NOT NULL,
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (course_id) REFERENCES course(course_id)
以上是示例代码,具体的表结构和数据类型可以根据实际需求进行调整。