mysql学习之触发器

  在借阅表和读者表当中存在着这样的关系,如果在借阅表当中添加一条数据,读者表当中对应的累计借书字段就自增1,如果在借阅表当中删除一条数据,读者表当中对应的累计借书字段就自减1,实现本功能的方法如下。

1、创建读者表

 1 CREATE TABLE `t_borrowbook` (
 2   `borrowBookId` int(11) NOT NULL AUTO_INCREMENT,
 3   `bookId` int(11) DEFAULT NULL,
 4   `id` int(11) DEFAULT NULL,
 5   `audienceId` int(11) DEFAULT NULL,
 6   `startTime` datetime DEFAULT NULL,
 7   `endTime` datetime DEFAULT NULL,
 8   `borrowBookDesc` text,
 9   PRIMARY KEY (`borrowBookId`)
10 )

2、创建借阅表

 1 CREATE TABLE `t_audience` (
 2   `audienceId` int(10) NOT NULL AUTO_INCREMENT,
 3   `audienceName` varchar(20) NOT NULL,
 4   `audienceTypeId` int(10) NOT NULL,
 5   `audienceNumber` varchar(18) NOT NULL,
 6   `sex` varchar(20) DEFAULT NULL,
 7   `cellphone` varchar(11) DEFAULT NULL,
 8   `borrowBookNum` int(10) DEFAULT NULL,
 9   `audienceDesc` text,
10   PRIMARY KEY (`audienceId`)
11 )

3、创建插入自增触发器

 1 DELIMITER $$
 2
 3 CREATE
 4     /*[DEFINER = { user | CURRENT_USER }]*/
 5     TRIGGER `db_book`.`Tr_borrowbook_Insert` AFTER INSERT
 6     ON `db_book`.`t_borrowbook`
 7     FOR EACH ROW BEGIN
 8     UPDATE t_audience SET borrowBookNum = borrowBookNum+1 WHERE audienceId=new.audienceId;
 9     END$$
10
11 DELIMITER ;

4、创建删除自减触发器

 1 DELIMITER $$
 2
 3 CREATE
 4     /*[DEFINER = { user | CURRENT_USER }]*/
 5     TRIGGER `db_book`.`Tr_borrowbook_Delete` AFTER DELETE
 6     ON `db_book`.`t_borrowbook`
 7     FOR EACH ROW BEGIN
 8     UPDATE t_audience SET borrowBookNum = borrowBookNum-1 WHERE audienceId=old.audienceId;
 9     END$$
10
11 DELIMITER ;

  每天进步一点点,一切都是最好的安排。

时间: 2024-10-20 08:37:20

mysql学习之触发器的相关文章

Mysql学习---视图/触发器/存储过程/函数/索引 180101

视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由于视图是虚拟表,所以无法使用其对真实表进行创建.更新和删除操作,PyMysql是支持视图的. 仅能做查询用. 创建视图: create VIEW stu as select * from student; # 这里只是建立了一个对应关系,视图是虚表,动态获取数据 select * from stu;

MySQL学习笔记--触发器的创建与删除及使用注意事项

-----/*触发器*/ --满足触发条件时就会.自动执行.触发器中的语句,可以保证某些操作之间的一致性 --可以层叠更改,可以引用其他表中的列 --事前触发器可以获取事前之前和新的字段值,验证一些条件和进行一些准备操作,在表保存之前触发*/ --事后触发器是进行收尾工作,保证事务的完整性,在经表修改之后才能生效*/ --行级触发器是对DML语句影响的每个行执行一次,如UPDATE语句影响多行,就会对每行都激活一次触发器. -----创建 --创建只有一个执行语句的触发器  基本形式如下:  c

我的MYSQL学习心得(十二) 触发器

这一篇<我的MYSQL学习心得(二)>将会讲解MYSQL的触发器 触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL 也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用. 创建触发器 语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 触发程序是与表有关的命名数据库对象,当表上出现特定

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

我的MYSQL学习心得(十二)

原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 这一篇<我的MYSQL学习心得(二)>将会讲解MYSQL的触发器 触发器是一个特殊的存储过程,不

我的MYSQL学习心得

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MY

mysql学习笔记-简介

1.数据存储方式3个阶段 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 数据库组成 1.数据库由若干张表组成,表由若干个字段组成 2.关系数据库的表都是二维表 2.数据库泛型(创建数据库必须满足的要求) 1.第一范式(1NF):设计数据库满足的最低要求表中不能有重复字段,并且每个字段不能在拆分 3.数据库技术构成 1.数据库系统 2.sql语句 3.数据库访问技术等 4.sql语言分类 1.DDL(数据定义语言):主要用于创建表,视图,索引,触发器等.其中包括CREATE(创建表),A

MYSQL学习心得

转载:http://www.cnblogs.com/lyhabc/p/3691555.html 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过

MySQL学习总结(摘抄)

1.数据库概述 简 而言之,数据库(DataBase)就是一个存储数据的仓库.为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有 效的组织和管理存储在数据库中的数据.如今,已经存在的Oracle.SQLServer.MySQL等诸多优秀的数据库. 详解内容: 数据存储方式 数据库在开发中的作用 数据库访问技术 MySQL数据库的介绍 数据库泛型 SQL语言 常见数据库系统 如果学习数据库 1.1 数据库理论基础 数据库能够将数据按照特定的规律组织起来.那么,数