数据库系统概论 | 触发器代码 | 行级触发器 | 语句级触发器

触发器

这篇博客拿两个例子来解释一下什么是行级触发器和语句级触发器。

**例子1:**当对表SC的Grade属性进行修改时,若分数增加了10%,则将此次操作记录到另一个表SC_U(Sno CHAR(8)、Cno CHAR(5)、Oldgrade SMALLINT、Newgrade SMALLINT )。

CREATE TRIGGER SC_T
AFTER UPDATE ON SC
REFERENCING
OLD AS OldTuple,
NEW AS NewTuple
FOR EACH ROW
WHEN (NewTuple.Grade >= 1.1 * OldTuple.Grade)
BEGIN
INSERT INTO SC_U (Sno,Cno,OldGrade,NewGrade)
VALUES(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Grade)
END

**例子2:**将每次对表Student的插入操作所增加的学生个数记录到表 Student InsertLog(numbers INT)中。

CREATE TRIGGER Student_Count
AFTER INSERT ON Student
REFERENCING
NEWTABLE AS Delta
FOR EACH STATEMENT
BEGIN
INSERT INTO StudentInsertLog (Numbers)
SELECT COUNT(*) FROM Delta
END

第一个例子演示的是行级触发器,而第二个例子则是语句级触发器。

行级触发器在每次修改一行记录时被激活。对于一个 INSERTUPDATEDELETE 语句影响的每一行,触发器将执行一次。语句级触发器在执行完一个 INSERTUPDATEDELETE 语句后被激活。无论该语句影响了多少行,触发器只执行一次。

在第一个例子中,当表SC的Grade被修改时,触发器都会检查新分数是否比旧分数增加了10%或更多。如果是,则执行触发动作,触发动作为将更新前后的分数及其他相关信息插入到 SC_U表中。

在第二个例子中,每当对 Student表执行 INSERT 语句时,触发器在整个插入操作完成后被激活。而每个INSERT操作可以是插入一行,也可以是插入多行。作为语句级触发器,并不关心一次INSERT是插入多少行,而等到整个INSERT操作后,计算本次 INSERT 语句插入的行数,并将这个计数插入到 StudentInsertLog 表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink 窗口触发器(Trigger)(一)

Flink 窗口触发器(Trigger)(一) Flink 窗口触发器(Trigger)(二) Flink的窗口触发器(Trigger)是流处理中一个非常关键的概念,它定义了窗口何时被触发并决定触发后的行为(如进行窗口数据的计算或清理)。 一、基本概念 …

[数据集][目标检测]人员状态跑睡抽烟打电话跌倒检测数据集4943张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4943 标注数量(xml文件个数):4943 标注数量(txt文件个数):4943 标注…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字,想到快慢指针,但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数,时间复杂度O(nlogn)不符合题目要求,空间复杂度O(1)。…

Pytorch学习之torch.split函数

Pytorch学习之torch.split函数 一、简介 torch.split用于将一个张量(tensor)沿指定维度(dim)拆分为多个子张量。这个函数对于处理需要按块拆分数据的任务非常有用,例如在自然语言处理和图像处理中的数据预处理。 二…

RXMH2 RK223 069 AS大容量中间继电器 板前接线 约瑟JOSEF

RXMH2大容量中间继电器型号: RXMH2 RK 223 067大容量中间继电器; RXMH2 RK 223 068大容量中间继电器; RXMH2 RK 223 069大容量中间继电器; RXMH2 RK 223 070大容量中间继电器; 用途 用于电力系统二次回路及工业自…

基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建Kafka大数据运算环境---任务11:基础环境准备

任务描述 任务主要是安装配置基础环境,主要内容包括: 1、安装java Kafka和ZooKeeper都需要安装Java环境,推荐至少Java8及以上版本 2、安装ZooKeeper ZooKeeper是Kafka集群的必要组件 3、安装kafka Kafka版本包括使用的scala语言版本和kafka版…

Ubuntu22.04上Docker的安装

1. 使用APT安装 首先安装HTTPS传输的软件包和CA证书,确保软件下载过程中不被篡改。 sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y然后,使用国内源,并添加软件源的 GPG 密钥以防…

Java面试题:讨论持续集成/持续部署的重要性,并描述如何在项目中实施CI/CD流程

持续集成/持续部署(CI/CD)的重要性 持续集成(Continuous Integration, CI) 和 持续部署(Continuous Deployment, CD) 是现代软件开发的重要实践。这些方法通过自动化构建、测试和部署过程,显著…

Ubuntu 用户配置

环境信息 系统版本Ubuntu16.04.1-Ubuntu x86_64 创建用户组 新建一个用户组,GID为888。 sudo addgroup –g 888 组名删除用户组 sudo delgroup 组名创建用户 username 为用户名,执行后系统会提示输入新用户的密码,后续输入其他信息&#xff0…

代码随想录day34 贪心(5)

56. 合并区间 - 力扣(LeetCode) 写法一:维护right和left两个数作为当前区间的左右边界 class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key lambda x: x[0])left intervals[0][0]ri…

番外1:企业数据

数据类别说明 企业中除了主数据和次级数据外,企业中还有其他一些常见的数据分类,这些数据类型根据其特定的用途和性质,在企业的各个功能和部门中起着重要作用。 主数据(Master Data) 主数据是企业中核心、长期存在且在整个组织中广泛使用的关键数据。主数据具有以下特征:…

Vue2和Vue3的区别Vue3的组合式API

一、Vue2和Vue3的区别 1、创建方式的不同: (1)、vue2:是一个构造函数,通过该构造函数创建一个Vue实例 new Vue({})(2)、Vue3:是一个对象。并通过该对象的createApp()方法,创建一个vue实例。 Vue…

RAG技术下的文档智能检索

在数字化浪潮的推动下,信息检索已成为我们日常生活中不可或缺的一部分。然而,随着数据量的爆炸式增长,如何快速精准地从海量文档中检索出有价值的信息,成为了一个巨大的挑战。本文将带您走进 Pinecone 向量数据库的世界&#xff0…

AIGC到底如何改变创意设计?

在当今数字化时代,AIGC(生成式人工智能)技术的崛起对创意设计领域产生了深远的影响。AIGC不仅为设计师提供了新的工具和方法,还改变了传统的设计流程和思维方式。 传统的设计过程中,设计师需要耗费大量时间在绘图、修…

npm install puppeteer 报错 npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated解决办法

npm install puppeteer 报错如下: npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated. Use PUPPETEER_DOWNLOAD_BASE_URL instead. npm ERR! Error: ERROR: Failed to set up Chrome v126.0.6478.126! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to sk…

【Linux进程】僵尸进程与孤儿进程

前言 僵尸进程和孤儿进程是Linux中极为重要的两个种进程状态, 本文将会围绕这三个问题: 是什么? 为什么? 如何产生的? 详细的介绍这两种进程; 以及一些使用场景. 僵尸进程 在了解孤儿进程之前, 需要先引入僵尸进程的概念; 什么是僵尸进程? 僵尸进程: 就是处于僵死状态的进…

揭秘代理IP:原理、优势与应用场景全面解析

随着数字化进程的加速,网络安全已经成为现代社会不可或缺的一环。无论是政府机构、企业还是个人用户,都面临着越来越多的网络威胁。本文将深入探讨网络安全的重要性、面临的主要威胁以及应对策略,旨在为读者提供一个全面的网络安全视角。 1.…

黑马点评学习过程汇总——Cookie \ Session \ Token的区别

1. Cookie \ Session \ Token的区别 10分钟助你弄懂cookie、session、token 区别、用途!!!_哔哩哔哩_bilibili (1)为什么要使用Cookie 在客户端和服务端之间维持用户登录状态 (2)为什么不能只…

类似Jira的在线项目管理软件有哪些?10 个主流的Jira替代方案

10 个 Jira 替代方案:PingCode、Worktile、Teambition、Redmine、Asana、monday.com、Zoho Projects、思码逸、Notion、Airtable。 Jira 是一款流行的项目管理工具,专为产品开发团队而设计。虽然它是一种多功能解决方案,几乎适用于任何类型的…

Git 操作补充:变基

变基 在 Git 中,整合来自不同分支的修改,除了 merge,还有一种方法,变基 rebase。git rebase 命令基本是是一个自动化的 cherry-pick 命令,它计算出一系列的提交,然后在其他地方以同样的顺序一个一个的 che…