日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关系数据库SQL之可编程性触发器

發(fā)布時間:2024/7/19 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关系数据库SQL之可编程性触发器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

前面關(guān)系數(shù)據(jù)庫SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫提供了可編程性的函數(shù)、存儲過程、事務、觸發(fā)器及游標,前文已介紹了函數(shù)、存儲過程、事務,本文來介紹一下觸發(fā)器的使用。(還是以前面的銀行系統(tǒng)為例)

概述

觸發(fā)器(TRIGGER)是個特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當對一個表進行操作( INSERT,DELETE, UPDATE)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務規(guī)則等。 觸發(fā)器可以從 DBA_TRIGGERS ,USER_TRIGGERS?數(shù)據(jù)字典中查到。

觸發(fā)器分為兩種:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。

語法

  • 創(chuàng)建觸發(fā)器
CREATE TRIGGER <觸發(fā)器名稱> ON <表名|視圖名> [AFTER | INSTEAD OF] <INSERT,DELETE,UPDATE> AS --SQL語句塊
  • 修改觸發(fā)器
ALERT TRIGGER <觸發(fā)器名稱> ON <表名|視圖名> [AFTER | INSTEAD OF] <INSERT,DELETE,UPDATE> AS --SQL語句塊
  • 刪除觸發(fā)器
DROP TRIGGER <觸發(fā)器名稱>

說明:

  • AFTER觸發(fā)器主要用于在數(shù)據(jù)表執(zhí)行INSERT,DELETE, UPDATE操作之后,同時操作其他表。
  • INSTEAD OF觸發(fā)器會替代所要執(zhí)行的SQL語句,也就是說所要執(zhí)行SQL并不會真正執(zhí)行,真正執(zhí)行的是觸發(fā)器中定義的操作。
  • AFTER觸發(fā)器只針對表操作,INSTEAD OF觸發(fā)器除了操作表還可以作用于視圖,擴展視圖可以支持的更新操作。
  • AFTER觸發(fā)器是在執(zhí)行SQL之后觸發(fā),而INSTEAD OF觸發(fā)器是在執(zhí)行SQL之前觸發(fā)。
  • 一個表的INSERT,DELETE, UPDATE操作可以有多個AFTER觸發(fā)器,有至多一個INSTEAD OF觸發(fā)器
  • 特殊表

    觸發(fā)器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)

    示例

    1.AFTER觸發(fā)器示例
    在取錢時,交易信息表里面插入交易信息,同時要更改賬戶表里面的余額

    --創(chuàng)建觸發(fā)器 CREATE TRIGGER Trigger_getMoney ON TransInfo AFTER INSERT AS declare @cardId varchar(19) declare @tranMoney money select @cardId = CardID , @tranMoney = TransMoney from instered; update CardInfo set LeftMoney = LeftMoney - @tranMoney where CardID = @cardId GO--執(zhí)行插入操作 insert into TransInfo values('1324 3626 7532 1935','取款',500,default);

    2.INSTEAD OF觸發(fā)器
    指定的賬戶"422322001550135015"不可以刪除

    --創(chuàng)建觸發(fā)器 CREATE TRIGGER Trigger_deleteAccount ON AccountInfo INSTEAD OF DELETE AS delete from AccountInfo where CardID != '422322001550135015' AND CardID=(select?CardID from?deleted) --執(zhí)行刪除操作

    本文就介紹到這里。
    如有疑問請聯(lián)系我。

    原文來自:簡書

    轉(zhuǎn)載于:https://www.cnblogs.com/seayxu/p/5500066.html

    總結(jié)

    以上是生活随笔為你收集整理的关系数据库SQL之可编程性触发器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。