sqlservertrigger
『壹』 Oracle中觸發器有幾種,用法與sql Server一樣嗎謝謝
ORACLE觸發器有以下兩類:
1
語句級(Statement-level)觸發器,在CREATE
TRIGGER語句中不包含FOR
EACH
ROW子句。語句級觸發器對於觸發事件只能觸發一次,
而且不能訪問受觸發器影響的每一行的列值。一般用語句級觸發器處理有關引起觸發器觸發的SQL語句的信息——例如,由誰來執行
2
行級(Row-level)觸發器,在CREATE
TRIGGER語句中包含FOR
EACH
ROW子句。行級觸發器可對受觸發器影響的每一行觸發,並且能
夠訪問原列值和通過SQL語句處理的新列值。行級觸發器的典型應用是當需要知道行的列值時,執行一條事務規則。
SQL
Server支持兩種類型的觸發器:
AFTER
觸發器和INSTEAD
OF
觸發器。其中AFTER
類型觸發器要求只有執行某一操作(INSERT
UPDATE
DELETE)
之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於AFTER
觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder
來完成此任務。
INSTEAD
OF
觸發器表示並不執行其所定義的操作(INSERT、
UPDATE、
DELETE),而僅是執行觸發器本身。既可在表上定義INSTEAD
OF
觸發器,也可以在視圖上定義INSTEAD
OF
觸發器,但對同一操作只能定義一個INSTEAD
OF
觸發器。
『貳』 sql server 寫一個觸發器指定欄位更新才觸發
createtriggertest
on表一
afterupdate
asbegin
updatebsetb.欄位4=a.欄位2,b.欄位5=a.欄位3from表二b,insertedawherea.表一和表二的關聯欄位=b.表一和表二的關聯欄位andb.欄位5=1
end
點這個地方就能私聊,加一下求求
『叄』 sqlServer如何在一張表插入數據後馬上也會在另一張表中出現
對表1寫個添加觸發器。createtriggertrigger_1on表1forinsertasdeclare@shuxuedeclare@yuwenselect@shuxue=shuxue,@yuwen=yuwenfrominsertedinsertinto表2values(@shuxue,@yuwen)。
SQL是高級的非過程化編輯語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的sql語言作為數據輸入與管理的介面。
