觸發(fā)器是干什么用的,有什么作用。
觸發(fā)器是干什么用的,有什么作用。
一、觸發(fā)器是一個(gè)具有記憶功能的,具有兩個(gè)穩(wěn)定狀態(tài)的信息存儲(chǔ)器件,是構(gòu)成多種時(shí)序電路的最基本邏輯單元,也是數(shù)字邏輯電路中一種重要的單元電路。
在數(shù)字系統(tǒng)和計(jì)算機(jī)中有著廣泛的應(yīng)用。
觸發(fā)器具有兩個(gè)穩(wěn)定狀態(tài),即“0”和“1”,在一定的外界信號(hào)作用下,可以從一個(gè)穩(wěn)定狀態(tài)翻轉(zhuǎn)到另一個(gè)穩(wěn)定狀態(tài)。
二、觸發(fā)器的作用
1、可在寫入數(shù)據(jù)表前,強(qiáng)制檢驗(yàn)或轉(zhuǎn)換數(shù)據(jù)。
2、觸發(fā)器發(fā)生錯(cuò)誤時(shí),異動(dòng)的結(jié)果會(huì)被撤銷。
3、部分?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)可以針對(duì)數(shù)據(jù)定義語(yǔ)言(DDL)使用觸發(fā)器,稱為DDL觸發(fā)器。
4、可依照特定的情況,替換異動(dòng)的指令 (INSTEAD OF)。
擴(kuò)展資料:
觸發(fā)器的優(yōu)點(diǎn)
觸發(fā)器可通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改,不過(guò),通過(guò)級(jí)聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以強(qiáng)制用比CHECK約束定義的約束更為復(fù)雜的約束。與 CHECK 約束不同,觸發(fā)器可以引用其它表中的列。
例如,觸發(fā)器可以使用另一個(gè)表中的 SELECT 比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義錯(cuò)誤信息。觸發(fā)器也可以評(píng)估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對(duì)策。一個(gè)表中的多個(gè)同類觸發(fā)器(INSERT、UPDATE 或 DELETE)允許采取多個(gè)不同的對(duì)策以響應(yīng)同一個(gè)修改語(yǔ)句。
觸發(fā)器的作用是什么?
觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,當(dāng)使用下面的一種或多種數(shù)據(jù)修改操作在指定表中對(duì)數(shù)據(jù)進(jìn)行修改時(shí),觸發(fā)器會(huì)生效:UPDATE、INSERT?或?DELETE。觸發(fā)器可以查詢其它表,而且可以包含復(fù)雜的?SQL?語(yǔ)句。
它們主要用于強(qiáng)制復(fù)雜的業(yè)務(wù)規(guī)則或要求。
例如,可以控制是否允許基于顧客的當(dāng)前帳戶狀態(tài)插入定單。
觸發(fā)器還有助于強(qiáng)制引用完整性,以便在添加、更新或刪除表中的行時(shí)保留表之間已定義的關(guān)系。然而,強(qiáng)制引用完整性的**方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫(kù)關(guān)系圖,則可以在表之間創(chuàng)建關(guān)系以自動(dòng)創(chuàng)建外鍵約束。
觸發(fā)器的優(yōu)點(diǎn)如下:
1、觸發(fā)器是自動(dòng)的:它們?cè)趯?duì)表的數(shù)據(jù)作了任何修改(比如手工輸入或者應(yīng)用程序采取的操作)之后立即被激活;
2、觸發(fā)器可以通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行層疊更改。例如,可以在?titles?表的?title_id?列上寫入一個(gè)刪除觸發(fā)器,以使其它表中的各匹配行采取刪除操作。該觸發(fā)器用?title_id?列作為**鍵,在?titleauthor、sales?及?roysched?表中對(duì)各匹配行進(jìn)行定位;
3、觸發(fā)器可以強(qiáng)制限制,這些限制比用?CHECK?約束所定義的更復(fù)雜。
與?CHECK?約束不同的是,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以回滾試圖對(duì)價(jià)格低于?10?美元的書(存儲(chǔ)在?titles?表中)應(yīng)用折扣(存儲(chǔ)在?discounts?表中)的更新。
觸發(fā)器的分類:
1、DML( 數(shù)據(jù)操縱語(yǔ)言 Data Manipulation Language)觸發(fā)器:是指觸發(fā)器百科在數(shù)據(jù)庫(kù)中發(fā)生DML事件時(shí)將啟用。
DML事件即指在表或視圖中修改數(shù)據(jù)的insert、update、delete語(yǔ)句;
2、DDL(數(shù)據(jù)定義語(yǔ)言 Data Definition Language)觸發(fā)器:是指當(dāng)服務(wù)器或數(shù)據(jù)庫(kù)中發(fā)生(DDL事件時(shí)將啟用。DDL事件即指在表或索引中的create、alter、drop語(yǔ)句也;
3、登陸觸發(fā)器:是指當(dāng)用戶登錄SQL SERVER實(shí)例建立會(huì)話時(shí)觸發(fā)。
觸發(fā)器的應(yīng)用和用法?
1、觸發(fā)器的定義就是說(shuō)某個(gè)條件成立的時(shí)候,觸發(fā)器里面所定義的語(yǔ)句就會(huì)被自動(dòng)的執(zhí)行。因此觸發(fā)器不需要人為的去調(diào)用,也不能調(diào)用。
2、觸發(fā)器的觸發(fā)條件其實(shí)在定義的時(shí)候就已經(jīng)設(shè)定好了。
3、觸發(fā)器可以分為語(yǔ)句級(jí)觸發(fā)器和行級(jí)觸發(fā)器。簡(jiǎn)單的說(shuō)就是語(yǔ)句級(jí)的觸發(fā)器可以在某些語(yǔ)句執(zhí)行前或執(zhí)行后被觸發(fā)。而行級(jí)觸發(fā)器則是在定義的了觸發(fā)的表中的行數(shù)據(jù)改變時(shí)就會(huì)被觸發(fā)一次。
4、具體舉例:
1)、 在一個(gè)表中定義語(yǔ)句級(jí)的觸發(fā)器,當(dāng)這個(gè)表被刪除時(shí),程序就會(huì)自動(dòng)執(zhí)行觸發(fā)器里面定義的操作過(guò)程。
這個(gè)【刪除表的操作】就是觸發(fā)器執(zhí)行的條件。
2)、 在一個(gè)表中定義行級(jí)的觸發(fā)器,那當(dāng)【這個(gè)表中一行數(shù)據(jù)發(fā)生變化】的時(shí)候,比如刪除了一行記錄,那觸發(fā)器也會(huì)被自動(dòng)執(zhí)行了。
5、創(chuàng)建觸發(fā)器語(yǔ)句
6、觸發(fā)器作用(應(yīng)用場(chǎng)景)
(1)數(shù)據(jù)確認(rèn)
(2)實(shí)施復(fù)雜的安全性檢查
(3)做日志記錄,跟蹤表上所做的數(shù)據(jù)操作等
(4)數(shù)據(jù)的備份和同步;
擴(kuò)展資料
一、觸發(fā)器介紹
1、數(shù)據(jù)庫(kù)觸發(fā)器是一個(gè)與表相關(guān)聯(lián)的、存儲(chǔ)的 PL/SQL 程序。
每當(dāng)一個(gè)特定的數(shù)據(jù)操作語(yǔ)句(Insert,update,delete)在指定的表上發(fā)出時(shí),Oracle 自動(dòng)地執(zhí)行觸發(fā)器中定義的語(yǔ)句序
列。
2、觸發(fā)器的作用
觸發(fā)器可用于:
(1)數(shù)據(jù)確認(rèn)
(2)實(shí)施復(fù)雜的安全性檢查
(3)做審計(jì),跟蹤表上所做的數(shù)據(jù)操作等
(4)數(shù)據(jù)的備份和同步
3、觸發(fā)器的類型
(1)語(yǔ)句級(jí)觸發(fā)器
在指定的操作語(yǔ)句操作之前或之后執(zhí)行一次,不管這條語(yǔ)句影響了多少行 。
(2)行級(jí)觸發(fā)器(FOR EACH ROW)
觸發(fā)語(yǔ)句作用的每一條記錄都被觸發(fā)。
在行級(jí)觸發(fā)器中使用 old 和 new 偽記錄變量,識(shí)別值的狀態(tài)。
什么是觸發(fā)器,它的作用是什么?
當(dāng)你有大量數(shù)據(jù)的話,索引就起作用了當(dāng)你有幾百萬(wàn)的數(shù)據(jù)的話,你要按某個(gè)條件提取數(shù)據(jù),沒(méi)有索引的話,查詢的時(shí)候會(huì)遍歷整張表,當(dāng)你索引,你的索引這時(shí)候就起作用了假設(shè)你想找到本書中的某一個(gè)句子。你可以一頁(yè)一頁(yè)地逐頁(yè)搜索,但這會(huì)花很多時(shí)間。
而通過(guò)使用本書的索引,你可以很快地找到你要搜索的主題。
表的索引與附在一本書后面的索引非常相似。它可以極大地提高查詢的速度。對(duì)一個(gè)較大的表來(lái)說(shuō),通過(guò)加索引,一個(gè)通常要花費(fèi)幾個(gè)小時(shí)來(lái)完成的查詢只要幾分鐘就可以完成。因此沒(méi)有理由對(duì)需要頻繁查詢的表增加索引。
觸發(fā)器(trigger)是個(gè)特殊的存儲(chǔ)過(guò)程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動(dòng),而是由事件來(lái)觸發(fā),比如當(dāng)對(duì)一個(gè)表進(jìn)行操作(insert,delete,update)時(shí)就會(huì)激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。觸發(fā)器可以從dba_triggers,user_triggers數(shù)據(jù)字典中查到。
觸發(fā)器可以查詢其他表,而且可以包含復(fù)雜的sql語(yǔ)句。它們主要用于強(qiáng)制服從復(fù)雜的業(yè)務(wù)規(guī)則或要求。例如:您可以根據(jù)客戶當(dāng)前的帳戶狀態(tài),控制是否允許插入新訂單。
觸發(fā)器也可用于強(qiáng)制引用完整性,以便在多個(gè)表中添加、更新或刪除行時(shí),保留在這些表之間所定義的關(guān)系。然而,強(qiáng)制引用完整性的**方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫(kù)關(guān)系圖,則可以在表之間創(chuàng)建關(guān)系以自動(dòng)創(chuàng)建外鍵約束。