⑴ sql中觸發器怎樣執行的
創建觸發器 是特殊的存儲過程,自動執行,一般不要有返回值。
1、後觸發器 (AFTER,FOR)先執行對應語句,後執行觸發器中的語句。
2、前觸發器 並沒有真正的執行觸發語句(insert,update,delete),而是執行觸發後的語句。
3、行級觸發器 (FOR EACH ROW) 在SQL server 中不存在。
(1)資料庫中觸發器有幾種觸發條件擴展閱讀:
創建觸發的語法
CREATE TRIGGER trigger_name --觸發器名稱
ON table_name --觸發的表
[WITH ENCRYPTION]
FOR [DELETE, INSERT, UPDATE] --選擇觸發器類型
AS --觸發後要做的語句
T-SQL語句
GO --結束標記
⑵ sql server2008中的觸發器有3種類型,分別為
(1)DML觸發器:是指觸發器在資料庫中發生數據操作語言(DML)事件時將啟用。DML事件即指在表或視圖中修改數據的insert、update、delete語句也。
(2)DDL觸發器:是指當伺服器或資料庫中發生數據定義語言(DDL)事件時將啟用。DDL事件即指在表或索引中的create、alter、drop語句也。
(3)登陸觸發器:是指當用戶登錄SQL SERVER實例建立會話時觸發。
⑶ 資料庫觸發器有什麼作用
觸發器的作用:
自動計算數據值,如果數據的值達到了一定的要求,則進行特定的處理。
同步實時地復製表中的數據。
實現復雜的非標準的資料庫相關完整性規則。
可在寫入數據表前,強制檢驗或轉換數據。
觸發器發生錯誤時,異動的結果會被撤銷。
部分資料庫管理系統可以針對數據定義語言(DDL)使用觸發器,稱為DDL觸發器。
可依照特定的情況,替換異動的指令 (INSTEAD OF)。
(3)資料庫中觸發器有幾種觸發條件擴展閱讀:
分類
SQL Server 包括三種常規類型的觸發器:DML 觸發器、DDL 觸發器和登錄觸發器。
DML觸發器
當資料庫中表中的數據發生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應的DML觸發器,那麼該觸發器自動執行。
DML觸發器的主要作用在於強制執行業 務規則,以及擴展Sql Server約束,默認值等。因為我們知道約束只能約束同一個表中的數據,而觸發器中則可以執行任意Sql命令。
DDL觸發器
它是Sql Server2005新增的觸發器,主要用於審核與規范對資料庫中表,觸發器,視圖等結構上的操作。比如在修改表,修改列,新增表,新增列等。
它在資料庫結構發生變化時執行,我們主要用它來記錄資料庫的修改過程,以及限製程序員對資料庫的修改,比如不允許刪除某些指定表等。
登錄觸發器
登錄觸發器將為響應 LOGIN 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。登錄觸發器將在登錄的身份驗證階段完成之後且用戶會話實際建立之前激發。
因此,來自觸發器內部且通常將到達用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日誌。如果身份驗證失敗,將不激發登錄觸發器。
參考資料來源:網路-觸發器
⑷ oracle中觸發器都有幾種
DML觸發器,又分為行級(for each row)和語句級,
替代觸發器,instead of
系統觸發器,也叫資料庫級,比如startup,shutdown等
用戶事件觸發器,比如Logon,logoff
⑸ 資料庫觸發器問題
--成績表的插入觸發器
Create Trigger tri_insert ON stu_grade
for insert
AS
set nocount on
Insert into Stu_info2
Select *
From Stu_info B
Where exists
(
Select 1 From stu_grade A,inserted I where A.學號=I.學號
And A.學號 = B.學號
And A.成績< 60 Group by A.學號 having count(A.學號) > 4)
)
set nocount off
請參考 sql server 觸發器,有問題進一步交流
⑹ 在資料庫里怎麼使用觸發器
觸發器是一類特殊的存儲過程,開發人員也可以定義、編寫符合業務需求的觸發器來維護數據的完整性。觸發器的控制流程及控制語句與存儲過程相同,但觸發器與存儲過程還是有相當大的差別,觸發器的定義格式及開啟方式與存儲過程不同,作為數據管理員或編程人員,熟練掌握觸發器的用法對維護、操作資料庫非常重要。基本語法1.創建觸發器語法格式創建語法:CREATETRIGGER+觸發器名稱+觸發時間點+觸發事件+ON+表名+FOREACHROWBEGIN…END其中,觸發時間點:BEFORE或AFTER,指明是在觸發事件之前還是之後執行。
觸發事件:INSERT、UPDATE、DELETE事件。例如,以下語句創建一個名字叫upd_check的觸發器,其在對account表作更新(UPDATE)操作之前(BEFORE)自動觸發。
CREATETRIGGERupd_…END2.刪除觸發器語法格式DROPTRIGGER+觸發器名稱3.觸發器案例用tab.sql腳本創建表環境,然後用下面語句創建觸發器。當往tab1表添加記錄後將觸發此觸發器,將此新記錄同時插入tab2表中。
DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_(tab2_id)values(new.tab1_id);END;//DELIMITER;當用下面語句往tab1表插入記錄時,tab2表中同時也添加了同樣的記錄,如圖tab1數據表
tab1數據表
tab2數據表
INSERTINTOtab1(tab1_id)values(')
tab.sql
⑺ 資料庫表中的觸發器有幾種
新增,刪除,修改 三種
⑻ mysql資料庫觸發器,怎麼做滿足條件觸發
語法錯誤。
MySQL 裡面。
IF 條件 THEN
......
END IF
的。
例如:
mysql>DELIMITER//
mysql>CREATEPROCEDURETestIfElse
->(
->p_valINT
->)
->BEGIN
->IF(p_val=1)THEN
->SELECT'1'ASA;
->ELSEIF(p_val=2)THEN
->SELECT'2'ASA;
->ELSE
->SELECT'other'ASA;
->ENDIF;
->END//
QueryOK,0rowsaffected(0.05sec)
mysql>callTestIfElse(1);
->//
+---+
|A|
+---+
|1|
+---+
1rowinset(0.00sec)
QueryOK,0rowsaffected(0.00sec)
mysql>callTestIfElse(2);
->//
+---+
|A|
+---+
|2|
+---+
1rowinset(0.00sec)
QueryOK,0rowsaffected(0.00sec)
mysql>callTestIfElse(3);
->//
+-------+
|A|
+-------+
|other|
+-------+
1rowinset(0.00sec)
QueryOK,0rowsaffected(0.00sec)
mysql>
你那裡少了一個 THEN
⑼ 請列舉幾種常用的觸發器
SQL Server 有三種常規類型的觸發器:DML 觸發器、DDL 觸發器和登錄觸發器。
DML觸發器,當資料庫中表中的數據發生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應的DML觸發器,那麼該觸發器自動執行;
DDL觸發器,它是Sql Server2005新增的觸發器,主要用於審核與規范對資料庫中表,觸發器,視圖等結構上的操作;
登錄觸發器,登錄觸發器將為響應 LOGIN 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。登錄觸發器將在登錄的身份驗證階段完成之後且用戶會話實際建立之前激發。