有一个学生管理程序,涉及到学生的证书,在这个程序里,学生可以自己添加一个或多个证书,把自己的证书信息添加到系统里,之后管理员对这些信息进行审核,确定证书的真实性。当学员的所有证书都审核通过后,学员的状态就会变为诚信,反之,只要有一个证书没有审核通过,学员状态就变为非诚信。或者是学员又重新上传了一个证书后,学员状态又变为非诚信,当管理员审核通过后,学员状态即改为程序。
学员表结构:(这里为了简单,省去或修改了部分信息)
学员ID,名称,性别,状态
证书表结构:
证书ID,名称,状态,学员ID
首先来创建这两个表,如下是建表语句:
view plaincopy to clipboardprint? /** * 创建一个学生表 *?? */ CREATE TABLE `students` (?? `id` INTEGER NOT NULL AUTO_INCREMENT,?? `name` VARCHAR(45) NOT NULL,?? `sex` VARCHAR(1) NOT NULL,?? `status` INTEGER NOT NULL,?? PRIMARY KEY (`id`)?? )?? ENGINE = InnoDB;??
/** * 创建一个证书表 *?? */ CREATE TABLE `certs` (?? `id` INTEGER NOT NULL AUTO_INCREMENT,?? `name` VARCHAR(45) NOT NULL,?? `status` INTEGER NOT NULL,?? `student_id` INTEGER NOT NULL,?? PRIMARY KEY (`id`)?? )?? ENGINE = InnoDB;
?/**
插入学生数据 * */ INSERT INTO students (id, name, sex, status) values(1, ‘liuhongjun’, ‘M’, 1); INSERT INTO students (id, name, sex, status) values(2, ‘pandeyou’, ‘M’, 1); /** * 插入证书数据 * */ INSERT INTO certs (id, name, status, students_id) values (1, ‘ACCP’, 1, 1); INSERT INTO certs (id, name, status, students_id) values (2, ‘OSTA’, 1, 1);
数据说明:
建好的的数据都是完整的,学员liuhongjun,对应了有两个证书,分别是ACCP和OSTA证书,证书的状态都为1,也就是审核通过的。
所以学员liuhongjun的状态是1,如下:
view plaincopy to clipboardprint? +—-+————+—–+——–+?? | id | name?????? | sex | status |?? +—-+————+—–+——–+?? | 1 | liuhongjun | F?? |????? 1 |?? | 2 | pandeyou?? | M?? |????? 1 |?? +—-+————+—–+——–+??
+—-+——+——–+————-+?? | id | name | status | students_id |?? +—-+——+——–+————-+?? | 1 | ACCP |????? 1 |?????????? 1 |?? | 2 | OSTA |????? 1 |?????????? 1 |?? +—-+——+——–+————-+
接下来,开始建立触发器,建立触发器代码如下:(触发器语法请参见:http://dev.mysql.com/doc/refman/5.1/zh/triggers.html#create-trigger)
view plaincopy to clipboardprint? /** * 创建证书触发器 *?? * 名称:trigger_certs * 触发时间:在certs表更新以后(AFTER) * 关联表:students * 执行的事务:如果该学员的证书全部状态都为1时,更新学员的状态为1,否则更新学员的状态为0。 */ delimiter //?? CREATE TRIGGER trigger_certs AFTER UPDATE ON certs??
FOR EACH ROW BEGIN?? SET @studentsId = OLD.students_id;?? IF OLD.status != NEW.status THEN?? ??? SELECT COUNT(id) INTO @total FROM certs c WHERE c.students_id = NEW.students_id AND c.s
免责声明: 本文仅代表作者个人观点,与无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
相关资料
推荐阅读
友情链接: Copyright © 2013-2023 页 当前在线:329人 网站在1时55分41秒内访问总人数:26594人 当前 18.73% |