1. 程式人生 > >如何使用oracle中的行級觸發器和語句級觸發器

如何使用oracle中的行級觸發器和語句級觸發器

create global temporary table sd2_userinfo_temp  --建立臨時表
(
  id number
) on commit delete rows;

create or replace trigger tri_sd2userinfo_adr    --建立行級觸發器
 after delete on sd2_userinfo
 referencing old as old new as new
 for each row
 begin
   insert into sd2_userinfo_temp values(:old.id);
 end;

create or replace trigger tri_sd2userinfo_ads    --建立語句級觸發器
 after delete on sd2_userinfo
declare
   num number;
   mem varchar2(20);
   lea number;
   userid number;
 begin
   select id into userid from sd2_userinfo_temp;
   delete from sd2_trade where sd2_trade.owner=userid;  --刪除他的交易記錄
   select sd2_troop.leader,sd2_troop.numbers,sd2_troop.member into lea,num,mem from sd2_troop where sd2_troop.member like concat(userid,':%') or sd2_troop.member like concat(concat('%:',userid),':%');
   EXCEPTION
     WHEN NO_DATA_FOUND
     THEN
     RETURN;
   if(lea=userid) then  --當該使用者為某隊的隊長時
     delete from sd2_troop where sd2_troop.leader=lea; --刪除該戰隊
     update sd2_userinfo set sd2_userinfo.troopid=0 where mem like concat(sd2_userinfo.id,':%') or mem like concat(concat('%:',userid),':%');
   elsif(num=2)  then   --當用戶為隊員,且該隊的成員數為2時
     delete from sd2_troop where sd2_troop.leader=lea; --刪除該戰隊
     update sd2_userinfo set sd2_userinfo.troopid=0 where sd2_userinfo.id=lea;  --將該隊的隊長的troopid置為0
   elsif(num>2)  then   --當用戶為隊員,且該隊的成員數大於2時
     update sd2_troop set sd2_troop.numbers=num-1,sd2_troop.member=replace(mem,concat(userid,':'),'') where sd2_troop.leader=lea;
   end if;
 end; 

相關推薦

如何使用oracle中的行觸發器語句觸發器

create global temporary table sd2_userinfo_temp  --建立臨時表(  id number) on commit delete rows; create or replace trigger tri_sd2userinfo_adr    --建立行級觸發器 af

oracle資料庫語句觸發器觸發器的使用

行級觸發器對DML語句影響的每個行執行一次,觸發器表(如:您的定義觸發器的emp表)變化一個記錄(I、D、U)就執行一次。 語句級觸發器對每個DML語句執行一次,完成一次“事務”觸發一次。 如果在TABLE表中插入的資料為500行,那麼這個表上的語句級觸

觸發器以及事前觸發事後觸發,語句觸發觸發

一、觸發器概念 觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件(增、刪、改)進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。 觸發器是在對錶進行增、刪、改時,自動執行的儲存過程。觸發器常用於強制業務規則,它是一種高階約束,通過事件進行觸發而被執行。

html中行標籤標籤

目錄行級標籤塊級標籤總結 行級標籤 特點:可以和其他元素保持在同一行,不可以自動換行,但不能設定寬高 常見的行級標籤:a,span,strong,u(下劃線),em(強調),i(斜體),sub(下標),

Html中行內元素元素有哪些?

  3.行內、塊狀元素: 塊元素(block element)   * address - 地址   * blockquote - 塊引用   * center - 舉中對齊塊   * dir - 目錄列表   * div - 常用塊級容易,也是css layout的主要標籤   * dl - 定義列表   

sql中表約束約束

server sel 檢查 href foreign 設置 截斷 eat mes sql中表級約束和列級約束,在SQL SERVER中, (1) 對於基本表的約束分為列約束和表約束約束是限制用戶輸入到表中的數據的值的範圍,一般分為列級約束與表級約束。列級約束有六種:主鍵Pr

HTML塊元素元素

使用 source 定義變量 time 選擇 can 圖形 內聯元素 時機 1、塊級元素 行級元素?塊級(block)元素的特點:①總是在新行上開始;②高度,行高以及外邊距和內邊距都可控制;③寬度缺省是它的容器的100%,除非設定一個寬度;④它可以容納內聯元素和其他塊元素。

html入門 如何 區別行元素 元素

src gin type head 一行 utf-8 p s html asd <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>

python學習之高語言語言

框架 HP 算法 高級 bin 環境 ruby 後綴 局限 註意:隨筆大家都可以看,文章別人找不到但可以通過URL訪問,日誌別人找不到URL也看不到 網絡編程:斷點續傳 WEB框架:用於寫網站 設計模式+算法 高級語言:Java、C#、PHP、Go、ruby 、C++

元素元素的區別

本文導讀:HTML中的元素可分為兩種型別:塊級元素和行級元素。這些元素的型別是通過文件型別定義(DTD)來指明。塊級元素:顯示在一塊內,會自動換行,元素會從上到下垂直排列,各自佔一行,如p,ul,form,div等標籤元素。行內元素:元素在一行內水平排列,高度由元素的內容決定,height屬性不起作

資料庫 SQL語言中 列約束約束

你知道嗎?約束分為列級約束和表級約束。   如果我們瞭解了這件事情,那麼當我們用T—SQL語句建立約束時,思路就會更加清晰。瞭解了這件事,相信我們會對約束有更進一步的理解。   大家都知道,在SQL Server 2000中有5種約束:  

實習日誌(3)mybaits1快取2快取

從<cache>和<cache-ref>說起 一級快取 一級快取預設是開啟的,是由baseExecutor來 維護,預設級別是session級別 protected PerpetualCache localCache; 至於PerpetualCache只

MySQL 中的行鎖、表鎖(不看後悔,看了必懂)

行級鎖 行級鎖是 MySQL 中鎖定粒度最細的一種鎖,表示只針對當前操作的行進行加鎖。行級鎖分為共享鎖和排他鎖。 特點:加鎖開銷大,會出現死鎖,鎖定粒度最小,發生鎖衝突的概率最低,併發度最高 頁級鎖 頁級鎖是 MySQL 中鎖定粒度介於行級鎖和表級鎖中間的一種鎖。

jquery獲取父元素元素

    <script type="text/javascript">  function show(x){     var y=$(x);//轉換成jquery物件     //查詢父元素    alert( y.parent().attr("name"));

詳述 MySQL 中的行鎖、表

在電腦科學中,鎖是在執行多執行緒時用於強行限制資源訪問的同步機制,即用於在併發控制中保證對互斥要求的滿足。 在資料庫的鎖機制中,咱們介紹過在 DBMS 中,可以按照鎖的粒度把資料庫鎖分為行級鎖(InnoDB 引擎)、表級鎖(MyISAM 引擎)和頁級鎖(BDB

關於HTML(含HTML5)的塊元素(內聯)元素總結

1.首先我們要知道什麼是塊級元素和行級(內聯)元素?    塊級(block)元素的特點:  ①總是在新行上開始;    ②高度,行高以及外邊距和內邊距都可控制;    ③寬度預設是它的容器的100%,除非設定一個寬度;    ④它可以容納內聯元素和其他塊元素。   

PostgreSQL觸發器(二)語句觸發器與行觸發器

    PostgreSQL中的觸發器可以分為:語句級觸發器與行級觸發器。     先說結論:語句級觸發器指執行每個SQL時,只執行一次 ;行級觸發器指每行都會執行一次。     下文會通過例項分別介紹這兩種觸發器。建立一張學生表和日誌表,在日誌表中記錄對學生表的操作(插

oracle存儲過程存儲函數&觸發器

員工 觸發器的類型 table 序列 ger set 備份 oracl return oracle存儲過程和存儲函數 指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程,存儲函數 存儲過程和存儲函數的相同點:完成特定功能的程序 存儲過程和存儲函數的區別:是否用return

Oracle03——遊標、異常、存儲過程、存儲函數、觸發器Java代碼訪問Oracle對象

height 微軟 數值 getc statement 數據類型 put print .exe 作者: kent鵬 轉載請註明出處: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.遊標(光標)Cursor 在寫

SQL語句面試題目:一般查詢子查詢

姓名 content tar 公司 平均工資 比較 以及 his http 幾個表 employees 表: EMPLOYEE_ID NUMBER(6) FIRST_NAME VARCHAR2(2