第 16 章 觸發程序.

Slides:



Advertisements
Similar presentations
美丽的鹿城 —— 包头 包头简介 包头旅游景区 包头美食. 包 头, 中国内蒙古自治区第一大城市,又称鹿城、草原钢城。 随着包头钢铁(集团)有限责任公司和包头稀土研究院的建成与 发展,这里又被称作稀土之都。 包头稀土研究院 包 头位于内蒙古自治区中部,东与呼和浩特市相邻,西与巴彦 淖尔盟市连接 ,北与蒙古国接壤.
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
教学网站: 数据库及应用 授课教师:岳静 Tel: 教学网站:
武汉库得克 软件有限公司 公司简介 发展机遇 特点 一家专注于质量管理平台和整体 解决方案的提供商
第6章 应收应付款管理.
青岛, 一座有故事的城市…… 刘瑞昌 青岛理工大学汽车与交通学院 2013年12月.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
第2章 SQL语言初步 2.1 SQL的基本概念 2.2 基本表、索引的创建、删除和修改操作 2.3 SQL的查询语句——SELECT
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术及应用 ——SQL Server 任课教师: 毕丛娣 电话: 年3月.
第四章 数据库对象.
第3章 SQL语言初步 2017/3/14.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
小组成员 杨云、王雯、曾明发 刘凤、祝会、陈丹凤.
資料庫 (Database) SQL Server 2008實作
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
第三章 企业资信评估 第一节 企业资信评估概述 一、企业资信评估的含义
Chap 13 視界與資料庫程式設計.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
在线考试系统 答辩人: 朱允昌、朱碧云、张海燕 汇报时间: 指导老师: 任艳、徐怡 软件应用与开发类
转正述职报告 乐恩公司 史航
数据库应用与程序设计.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
第五讲 利用视图进行查询优化.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
第四章:触发器   触发器类似于过程、函数,因为它们都是拥有说明部分、语句执行部分和异常处理部分的有名的PL/SQL块。与包类似,触发器必须存储在数据库中,并且不能被块进行本地化说明。但是,对于过程而言,可以从另一个块中通过过程调用显式地执行一个过程,同时在调用时可以传递参数。对于触发器而言,当触发事件发生时就会显式地执行该触发器,并且触发器不接受参数。
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
第 8 章 資料的 新增、修改與刪除.
課程名稱:資料庫系統 授課老師:李春雄 博士
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
Chap 10 SQL定義、操作與控制指令.
第 11 章 建立檢視表.
第 14 章 預存程序.
第 7 章 建立資料表與 資料庫圖表.
Transact-SQL 語言設計教學.
第8章 数据库的安全和完整性约束 数据库的破坏一般来自: 1.系统故障; 2.并发所引起的数据不一致; 3.人为的破坏;
第7章 ADO.NET操作SQL Server数据库
建立/修改/刪除資料表 建立資料表 使用Enterprise Manager工具
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
第 6 章 使用者權限.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Ch4.SQL Server 2005資料庫組成員元件介紹
实验二讲评 … 张榆….
数据库技术.
数据库应用技术 SQL Server 2005.
数据库技术与应用.
ORACLE 第九讲 触发器.
20 SQL Server全文檢索搜尋 20-1 SQL Server全文檢索搜尋 20-2 全文檢索目錄的建立 20-3 建立全文檢索索引
SQL Server Mobile 2005 程序开发(三)
第11章 事务与锁 11.1 事务Transact 11.2 数据并发的问题 11.3 锁Lock 11.4 事务隔离级别.
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL查询语句 蔡海洋.
第10章 触发器的创建和使用 10.1 触发器概述 10.2 创建触发器 10.3 修改触发器 10.4 删除触发器.
第三章 SQL Server数据管理.
讲课人:王璞 浙江工商职业技术学院.
第 7 章 建立資料表與資料庫圖表.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
实验一讲评 … 张榆….
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
第9章 视 图 教学提示:用户在查询数据库中的数据时,除了直接查看数据库中的表中的数据以外,还可以通过视图来查看表中的数据,也就是说,视图为用户提供了另外一种查看表中的数据的方式。 视图是一种虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成。
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
Presentation transcript:

第 16 章 觸發程序

本章重點 16-1 觸發程序的用途 16-2 觸發程序的種類與觸發時機 16-3 觸發程序的建立、修改、與停用 16-4 設計觸發程序的技巧 16-5 建立 AFTER 觸發程序 16-6 建立 INSTEAD OF 觸發程序

16-1 觸發程序的用途 條件約束 (Constraint) 直接設定於資料表內, 通常不需另外撰寫程式。 觸發程序 (Trigger) 對單一資料表所撰寫的特殊預存程序。

觸發程序的用途 檢查所做的更改是否允許 進行其他相關資料的更改動作 發出更改或預警的通知 自訂錯誤訊息 更改原來所要進行的資料操作 檢視表也可以有觸發程序

16-2 觸發程序的種類與觸發時機 AFTER 觸發程序 要在資料已變動完成之後 (AFTER),才會被啟動並進行必要的善後處理或檢查。 INSTEAD OF 觸發程序 是這類觸發程序會取代原本要進行的操作。

16-3 觸發程序的建立、修改、與停用 用 SQL 建立與修改觸發程序 檢視觸發程序的相關資訊 使用 SQL Server Management Studio 管理觸發程序 更改觸發程序的名稱 停用觸發程序

用 SQL 建立與修改觸發程序

用 SQL 建立與修改觸發程序 CREATE TRIGGER trigger_name ON {table | view} WITH ENCRYPTION { FOR | AFTER | INSTEAD OF} { [INSERT] [,] [UPDATE] [,] [DELETE] }

用 SQL 建立與修改觸發程序 AS sql_statements

用 SQL 建立與修改觸發程序

檢視觸發程序的相關資訊 sp_helptrigger 'table_name' [, 'type']

檢視觸發程序的相關資訊 sp_help 'trigger_name'

檢視觸發程序的相關資訊 sp_helptext 'trigger_name'

使用 SQL Server Management Studio 管理觸發程序

使用 SQL Server Management Studio 管理觸發程序

更改觸發程序的名稱

重新命名『檢視表、預存程序、自訂函數、觸發程序』的注意事項

停用觸發程序

停用觸發程序

停用觸發程序

停用觸發程序 { DISABLE | ENABLE } TRIGGER { trigger_name [ ,...n ] | ALL } ON object_name

16-4 設計觸發程序的技巧 設計觸發程序時的限制 在觸發程序中取得欄位修改之前及之後的資料 如何偵測異動筆數及復原異動 判斷欄位是否更改 觸發程序回應錯誤訊息的方式

設計觸發程序時的限制

在觸發程序中取得欄位修改之前及之後的資料

在觸發程序中取得欄位修改之前及之後的資料

在觸發程序中取得欄位修改之前及之後的資料 AFTER 觸發程序 被執行時,資料表已經完成更改的動作了,但尚未確認;也就是說,資料表內容雖然已經變更,但我們仍可用 ROLLBACK TRANSAC-TION(簡寫為 ROLLBACK) 敘述來回復到資料修改前的狀況,此時包括了在觸發程序中所做的任何修改動作都將回復。 INSTEAD OF 觸發程序 完全取代了原來的資料異動操作,因此不會先檢查條件約束;但仍會先將使用者要變更的資料放入 inserted、deleted 資料表中,以供程序中的程式使用。

如何偵測異動筆數及復原異動

如何偵測異動筆數及復原異動

如何偵測異動筆數及復原異動 當執行 INSERT、UPDATE、或 DELETE 時, 無論是否真正更動到資料, 觸發程序都會被執行。 在前面第一次刪除4 筆客戶資料時, 結果卻多出一個 “又有訂單被刪除了!” 訊息, 這是因為筆者已設定了客戶 T1與訂單 T1資料表的關聯:

如何偵測異動筆數及復原異動

如何偵測異動筆數及復原異動 在觸發程序中執行 ROLLBACK 時, 會結束目前批次的執行。

判斷欄位是否更改

判斷欄位是否更改

判斷欄位是否更改

觸發程序回應錯誤訊息的方式

觸發程序回應錯誤訊息的方式

觸發程序回應錯誤訊息的方式

觸發程序回應錯誤訊息的方式

16-5 建立 AFTER 觸發程序 AFTER INSERT 觸發程序 AFTER UPDATE 觸發程序 AFTER DELETE 觸發程序 AFTER 觸發程序綜合演練 設定 AFTER 觸發程序的啟動順序 巢狀觸發與遞迴觸發

AFTER INSERT 觸發程序

AFTER INSERT 觸發程序

AFTER UPDATE 觸發程序

AFTER UPDATE 觸發程序

AFTER UPDATE 觸發程序

AFTER UPDATE 觸發程序

AFTER DELETE 觸發程序

AFTER DELETE 觸發程序

AFTER 觸發程序綜合演練 底下的觸發程序可發 Mail 通知管理者資料被更改了:

AFTER 觸發程序綜合演練 由於資料表的 CHECK 限制只能參考到同一個資料表中的欄位值, 因此若需要由其他資料表中取出資料做檢查, 則必須用觸發程序來完成。

AFTER 觸發程序綜合演練

AFTER 觸發程序綜合演練 有些資料在更改之後, 我們會希望能將更改的日期及更改前的內容, 存入另一個記錄用的資料表中, 以供未來查閱之用。

設定 AFTER 觸發程序的啟動順序

設定 AFTER 觸發程序的啟動順序 每項操作最多只能設定一個 First 及一個 Last 觸發程序, 其他未指定 (None) 的程序則依任意順序觸發。 將觸發程序設為 None 即可取消其 First 或 Last 屬性。 設定的操作必須與觸發程序內容相符, 例如AFTER INSERT,UPDATE 的觸發程序, 不能設為DELETE 的 First 或 Last 程序。

設定 AFTER 觸發程序的啟動順序 在使用 ALTER TRIGGER 更改觸發程序的內容後, 會自動還原為None 屬性。 此功能只適用於 AFTER 觸發程序, 不能用於INSTEAD OF 觸發程序。

巢狀觸發與遞迴觸發 自己呼叫自己 (A→A→A...), 稱為『直接遞迴』, SQL Server 預設會防止直接遞迴。 經由別人再觸發 (A→B→A→B→A...), 稱為『間接遞迴』, 此狀況預設會一直執行下去, 若要禁止, 可如上將 'nested triggers' 選項設為0 即可。

16-6 建立 INSTEAD OF 觸發程序 什麼時候要使用 INSTEAD OF 觸發程序 INSTEAD OF 觸發程序的執行流程

什麼時候要使用 INSTEAD OF 觸發程序 當某敘述的資料操作被觸發程序禁止時, 若在觸發程序中使用 ROLLBACK, 則會中斷整個批次的執行;此時可改用 INSTEAD OF 觸發程序來避免批次被中斷, 因為不需要使用 ROLLBACK 來回復異動。 當一次異動多筆記錄時, 若在觸發程序中使用ROLLBACK, 則全部異動都會被回復。如果希望只取消有問題的異動, 則可以改用 INSTEAD OF 觸發程序。

什麼時候要使用 INSTEAD OF 觸發程序 若想要在檢視表中設定觸發程序, 則只能使用INSTEAD OF 觸發程序。AFTER 觸發程序不可使用在檢視表中。

INSTEAD OF 觸發程序的執行流程

INSTEAD OF 觸發程序實例 底下的範例在一次新增多筆資料時, 會先判斷新增資料的員工編號是否已經存在於資料表中, 若是則改用 UPDATE 來更新記錄:

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例 接續前例, 我們在員工 T2資料表中再加一個 AFTER 觸發程序, 看看在新增資料時是否會被觸發:

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例 接續前例, 我們再來設計 UPDATE 的觸發程序:

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例 當檢視表中使用到多個資料表時, 那麼如果要透過它來新增、修改、或刪除資料, 在處理上難免會有點複雜, 這時 INSTEAD OF 觸發程序又可派上用場了。

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例

INSTEAD OF 觸發程序實例