SQL触发器定义与使用
作者:黑码哥 发布时间:2024-01-28 09:21:27
比如:现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入一条老师数据,再向学生表中插入学生数据。
CALL sp_add_student(
'S20170091', '杨艳', '女', '2003-04-09',
15, 'G0206', 89.23, 'T0021'
);
如果有多个学生的数据需要插入,则需要多次调用该存储过程;可否不开发存储过程,在向student表插入(INSERT)数据前,后台自动判断并插入老师数据?
触发器简介
触发器:一种与表操作有关的数据库对象,当触发器所在表上出现指定事件(新增、修改、删除数据)时,将调用该对象,即表的操作事件触发表上的触发器的执行。
触发器的创建及调用
比如:现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入一条老师数据,再向学生表中插入学生数据。
触发器的创建:使用关键字CREATE TRIGGER
CREATE TRIGGER tri_add_student BEFORE INSERT
ON student FOR EACH ROW
BEGIN
IF NOT EXISTS(SELECT 1 FROM teacher WHERE teacher_id = new.teacher_id) THEN
INSERT INTO teacher(teacher_id) VALUES (new.teacher_id);
END IF;
END;
INSERT INTO student VALUES(
'S20170092', '李文', '女', '2002-11-19',
16, 'G0206', 55.32, 'T0022'
);
触发器的分类及执行顺序
按事件类型分:
INSERT触发器;
UPDATE触发器;
DELETE触发器;
按执行先后分:
BEFORE触发器;
AFTER触发器;
NEW与OLD:
INSERT触发器:NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据;
UPDATE触发器:OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据;
DELETE触发器:OLD 用来表示将要或已经被删除的原数据;
触发器执行时的异常情况:
如果 BEFORE 触发器执行失败,SQL 无法正确执行;
SQL 执行失败时,AFTER 型触发器不会触发;
AFTER 类型的触发器执行失败,SQL 会回滚;
触发器的删除
触发器的删除:使用关键字DROP TRIGGER
如:DROP TRIGGER tri_add_student;
触发器的优缺点
优点:
自动触发,无需调用;
提供了一种检查、保证数据完整性的方法;
与存储过程一样,增强SQL语言的功能和灵活性;
缺点:
开发调试困难;
可移植性差;
来源:https://liyunxiang.blog.csdn.net/article/details/128525164
猜你喜欢
- 使用PyQt5开发图形界面,里面使用日期框,这里把这个QDateEdit组件命名为:beginDatefrom PyQt5.QtCore i
- 在本文中,我们将介绍 Python 中 _ 字符的不同用法。就像 Python 中的许多其他内容一样,我们会看到 “_” 的不同用法主要是惯
- 使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单
- 一、Visdom简介Visdom是由Facebook公司开发的一个进行数据可视化的Web应用程序,支持Torch、Numpy、Pytorch
- 在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可
- 1.图像读取使用cv2.imread(filepath,flags)读入图像filepath: 读入图像完整路径(绝对路径,相对路径)fla
- 安装方法一:①进入python文件夹执行指令(前提是支持pip指令):pip3 install Beautifulsoup4②回车待安装完成
- 在使用Python时,需要使用各种各样的库,通常会使用pip直接安装,这样最为简单也最方便。但最为崩溃的地方在于有时候速度出奇的慢,因为
- 直接上代码:<span style="font-family: arial,helvetica,sans-serif; fo
- 前言学学Python中操纵JSON的知识。学完本文,你可以学到如下内容:1、JSON是什么?2、JSON与XML的优劣差异?3、将Pytho
- 参数数量及其作用该函数共有两个参数,分别是key和scope。def get_collection(key, scope=None) Wra
- 背景在开发中,我们常常会遇到一些耗时任务,举个例子:上传并解析一个 1w 条数据的 Excel 文件,最后持久化至数据库。在我的程序中,这个
- 有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的。在Python中,一个非常好的选择就是使用subprocess模块,本
- numpy中轴参数的意义指定的轴是被压缩的轴沿轴的时候可以指定两个轴,即面被压缩,以面作为输入numpy中轴转动numpy中添加新轴np.n
- 方法一、os.system() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来import os main
- function createobj() { if (window.ActiveXObject)&n
- 作者:xiaolanLin声明 :本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/xiaolan-Li
- 先看效果图 GY-85.py:#!/usr/bin/python3# -*- coding: utf-8 -*-import cursesf
- Python 包含6种数据类型,其中Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary
- MySQL的命令行提示符及其表达的意思mysql> 准备好接受新命令。 &n