存储器和触发器区别




    
触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。
当对某一表进行诸如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) 以上是示例代码,具体的结构和数据类型可以根据实际需求进行调整。