數據庫系統概論 | 觸發器代碼 | 行級觸發器 | 語句級觸發器

觸發器

這篇博客拿兩個例子來解釋一下什么是行級觸發器和語句級觸發器。

**例子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.pswp.cn/diannao/39921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39921.shtml
英文地址,請注明出處:http://en.pswp.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…