oracle 触发器代码,Oracle触发器实例代码
Oracle觸發(fā)器實(shí)例代碼
Oracle觸發(fā)器,用于選單后修改選單的表的觸發(fā)動(dòng)作。
--備貨檢驗(yàn)選單后 回寫備貨狀態(tài)
CREATE OR REPLACE TRIGGER tri_TobaccoStockINSERT
after INSERT
ON "TobaccoStockQuality"
FOR each ROW
BEGIN
UPDATE "GoodsStock" SET "FirstCheckState"=-1 WHERE "ID"=:NEW."GoodsStock_ID";
END;
--備貨檢驗(yàn)修改選單后 回寫備貨狀態(tài)
CREATE OR REPLACE TRIGGER tri_TobaccoStockUPDATE
before UPDATE
ON "TobaccoStockQuality"
FOR each ROW
BEGIN
UPDATE "GoodsStock" SET "FirstCheckState"=decode(to_number(:NEW."AuditStatus"),0,-1) WHERE "ID"=:NEW."GoodsStock_ID";
IF :NEW."GoodsStock_ID"<>:OLD."GoodsStock_ID" THEN
UPDATE "GoodsStock" SET "FirstCheckState"=-1 WHERE "ID"=:OLD."GoodsStock_ID";
END IF;
END;
--備貨檢驗(yàn)刪除單據(jù)后 回寫備貨狀態(tài)
CREATE OR REPLACE TRIGGER tri_TobaccoStockDELETE
before DELETE
ON "TobaccoStockQuality"
FOR each ROW
BEGIN
UPDATE "GoodsStock" SET "FirstCheckState"=-1 WHERE "ID"=:OLD."GoodsStock_ID";
END;
以上所述是小編給大家介紹的Oracle觸發(fā)器實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
時(shí)間: 2017-04-24
一.存儲(chǔ)過(guò)程的創(chuàng)建和使用 1.創(chuàng)建程序包,并在程序中創(chuàng)建存儲(chǔ)過(guò)程 create or replace PACKAGE NCS_ICP_TJ AS /*lfx@ncs-cyber.com.cn*/ /* TODO 在此輸入程序包聲明 (類型, 異常錯(cuò)誤, 方法等) */ /*根據(jù)備案主體ID拷貝通過(guò)表備案數(shù)據(jù)到備案臨時(shí)表,拷貝5張*/ PROCEDURE ICP_PASS_TO_TEMP( v_main_id IN icp_gn_temp_baxx_zt.ztid%TYPE, v_lyd IN i
出現(xiàn)原因,是因?yàn)樵诟碌牡谋砗妥x取的表是同一個(gè)表. CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING OLD AS old NEW AS N_ROW FOR EACH ROW DECLARE U_xtfidemp1 varchar(36); u_xtempcode1 varchar(20); u_xtempcodeCount int:=0; U_xtfidempCount int:=0; u_i
用語(yǔ)言實(shí)現(xiàn) 好處: 1.可以減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn). 2.可移植性好. 壞處: 1.操作起來(lái)考慮的東西較多,修改一處就要修改別一處.也就是說(shuō)是相互關(guān)聯(lián)的.如果少改了某一處,很可能使數(shù)據(jù)不一致. 用觸發(fā)器實(shí)現(xiàn) 好處: 1.可以使程序員從復(fù)雜的相互關(guān)聯(lián)中解放出來(lái),把精力放在復(fù)雜的業(yè)務(wù)上. 壞處: 1.可移植性差. 下面我就用一個(gè)例子實(shí)現(xiàn)一個(gè)簡(jiǎn)單的出入庫(kù).因?yàn)槭抢颖碇兴玫降淖侄魏苌?這里的例子只做為拋磚引玉. 數(shù)據(jù)表為入庫(kù)金額表(以下簡(jiǎn)稱入庫(kù)表)income,出庫(kù)金額表(以下簡(jiǎn)稱出庫(kù)表)outlay,
功能: 1. 允許/限制對(duì)表的修改 2. 自動(dòng)生成派生列,比如自增字段 3. 強(qiáng)制數(shù)據(jù)一致性 4. 提供審計(jì)和日志記錄 5. 防止無(wú)效的事務(wù)處理 6. 啟用復(fù)雜的業(yè)務(wù)邏輯 開始 create trigger biufer_employees_department_id before insert or update of department_id on employees referencing old as old_value new as new_value for each row wh
問(wèn)題:在SQL Server數(shù)據(jù)庫(kù)中,有自增列這個(gè)字段屬性,使用起來(lái)也是很方便的.而在Oracle中卻沒(méi)有這個(gè)功能,該如何實(shí)現(xiàn)呢? 答:在Oracle中雖然沒(méi)有自增列的說(shuō)法,但卻可以通過(guò)觸發(fā)器(trigger)和序列(sequence)來(lái)模式實(shí)現(xiàn). 示例: 1.建立表 復(fù)制代碼 代碼如下: create table user? (?? ??? id?? number(6) not null,?? ??? name?? varchar2(30)?? not null primary key? )
下面是一個(gè)觸發(fā)器的例子: 復(fù)制代碼 代碼如下: create or replace trigger logon_ip_controlafter logon on databasedeclare? ip STRING(30);? user STRING(30);beginSELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual;SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') into ip
詳解oracle中通過(guò)觸發(fā)器記錄每個(gè)語(yǔ)句影響總行數(shù) 需求產(chǎn)生: 業(yè)務(wù)系統(tǒng)中,有一步"抽數(shù)"流程,就是把一些數(shù)據(jù)從其它服務(wù)器同步到本庫(kù)的目標(biāo)表.這個(gè)過(guò)程有可能 多人同時(shí)抽數(shù),互相影響.有測(cè)試人員反應(yīng),原來(lái)抽過(guò)的數(shù),偶爾就無(wú)緣無(wú)故的找不到了,有時(shí)又會(huì)出來(lái)重復(fù)行.這個(gè)問(wèn)題產(chǎn)生肯定是抽數(shù)邏輯問(wèn)題以及并行的問(wèn)題了!但他們提了一個(gè)簡(jiǎn)單的需求:想知道什么時(shí)候數(shù)據(jù)被刪除了,什么時(shí)候插入了,我需要監(jiān)控"表的每一次變更"! 技術(shù)選擇: 第一就想到觸發(fā)器,這樣能在不涉及業(yè)務(wù)系統(tǒng)的代碼情況
使用oracle觸發(fā)器 實(shí)現(xiàn)對(duì)某個(gè)表的增改刪的監(jiān)控操作,并記錄到另一個(gè)表中. 代碼: 復(fù)制代碼 代碼如下: create or replace trigger test_trigger? ? before insert or update or delete on test_table? ? for each row? declare? ? v_id??????? varchar2(30);? ? v_bdlb????? varchar2(1);? ? v_jgdm????? VARCHAR2(
一.觸發(fā)器 1.觸發(fā)器在數(shù)據(jù)庫(kù)里以獨(dú)立的對(duì)象存儲(chǔ), 2.觸發(fā)器不需要調(diào)用,它由一個(gè)事件來(lái)觸發(fā)運(yùn)行 3.觸發(fā)器不能接收參數(shù) --觸發(fā)器的應(yīng)用 舉個(gè)例子:校內(nèi)網(wǎng).開心網(wǎng).facebook,當(dāng)你發(fā)一個(gè)日志,自動(dòng)通知好友,其實(shí)就是在增加日志的時(shí)候做一個(gè)出發(fā),再向表中寫入條目. --觸發(fā)器的效率很高 舉例:論壇的發(fā)帖,每插入一個(gè)帖子都希望將版面表中的最后發(fā)帖時(shí)間,帖子總數(shù)字段進(jìn)行同步更新,這時(shí)使用觸發(fā)器效率會(huì)很高. 二.Oracle 使用 PL/SQL 編寫觸發(fā)器 1.--PL/SQL創(chuàng)建觸發(fā)器的一般語(yǔ)法
本文實(shí)例講述了Oracle觸發(fā)器用法.分享給大家供大家參考,具體如下: 一.觸發(fā)器簡(jiǎn)介 觸發(fā)器的定義就是說(shuō)某個(gè)條件成立的時(shí)候,觸發(fā)器里面所定義的語(yǔ)句就會(huì)被自動(dòng)的執(zhí)行.因此觸發(fā)器不需要人為的去調(diào)用,也不能調(diào)用.然后,觸發(fā)器的觸發(fā)條件其實(shí)在你定義的時(shí)候就已經(jīng)設(shè)定好了.這里面需要說(shuō)明一下,觸發(fā)器可以分為語(yǔ)句級(jí)觸發(fā)器和行級(jí)觸發(fā)器.詳細(xì)的介紹可以參考網(wǎng)上的資料,簡(jiǎn)單的說(shuō)就是語(yǔ)句級(jí)的觸發(fā)器可以在某些語(yǔ)句執(zhí)行前或執(zhí)行后被觸發(fā).而行級(jí)觸發(fā)器則是在定義的了觸發(fā)的表中的行數(shù)據(jù)改變時(shí)就會(huì)被觸發(fā)一次. 具體舉例: 1.
Oracle addBatch()用法實(shí)例詳解 PreparedStatement.addbatch()的使用 Statement和PreparedStatement的區(qū)別就不多廢話了,直接說(shuō)PreparedStatement最重要的addbatch()結(jié)構(gòu)的使用. 1.建立鏈接???? Connection connection =getConnection(); 2.不自動(dòng) Commit connection.setAutoCommit(false); 3.預(yù)編譯SQL語(yǔ)句,只編譯一回哦,效
本文實(shí)例講述了oracle 存儲(chǔ)過(guò)程.函數(shù)和觸發(fā)器用法.分享給大家供大家參考,具體如下: 一.存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù) 指存儲(chǔ)在數(shù)據(jù)庫(kù)中供所有用戶程序調(diào)用的子程序叫存儲(chǔ)過(guò)程.存儲(chǔ)函數(shù). 創(chuàng)建存儲(chǔ)過(guò)程 用CREATE PROCEDURE命令建立存儲(chǔ)過(guò)程. 語(yǔ)法: create [or replace] procedure 過(guò)程名(參數(shù)列表) as PLSQL子程序體; --給指定員工漲工資 create procedure addSal(empid in number) as psal emp.sal%
MySQL觸發(fā)器語(yǔ)法詳解: 觸發(fā)器 trigger是一種特殊的存儲(chǔ)過(guò)程,他在插入(inset).刪除(delete)或修改(update)特定表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,它比數(shù)據(jù)本身標(biāo)準(zhǔn)的功能更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力.觸發(fā)器不是由程序調(diào)用,而是由某個(gè)事件來(lái)觸發(fā)的.在有數(shù)據(jù)修改時(shí)自動(dòng)強(qiáng)制執(zhí)行其業(yè)務(wù)規(guī)則,經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等.觸發(fā)器可以查詢其他表,而且包含復(fù)制的sql語(yǔ)句.觸發(fā)器也可用于強(qiáng)制引用完整性.觸發(fā)器可以強(qiáng)制比用check約束定義的約束更為復(fù)雜的約束. (一).CREAT
本文實(shí)例講述了Oracle例外用法.分享給大家供大家參考,具體如下: 一.例外分類 oracle將例外分為預(yù)定義例外.非預(yù)定義例外和自定義例外三種. 1).預(yù)定義例外用于處理常見的oracle錯(cuò)誤. 2).非預(yù)定義例外用于處理預(yù)定義例外不能處理的例外. 3).自定義例外用于處理與oracle錯(cuò)誤無(wú)關(guān)的其它情況. 下面通過(guò)一個(gè)小案例演示如果不處理例外看會(huì)出現(xiàn)什么情況? 編寫一個(gè)存儲(chǔ)過(guò)程,可接收雇員的編號(hào),并顯示該雇員的姓名. sql代碼如下: SET SERVEROUTPUT ON; DECLAR
先說(shuō)下緩存: 一個(gè)緩存就是一個(gè)組件,它可以透明地儲(chǔ)存數(shù)據(jù),以便以后可以更快地服務(wù)于請(qǐng)求.多次重復(fù)地獲取資源可能會(huì)導(dǎo)致數(shù)據(jù)重復(fù),消耗時(shí)間.因此緩存適用于變化性不大的一些數(shù)據(jù),緩存能夠服務(wù)的請(qǐng)求越多,整體系統(tǒng)性能就能提升越多. $cacheFactory介紹: $cacheFactory是一個(gè)為Angular服務(wù)生產(chǎn)緩存對(duì)象的服務(wù).要?jiǎng)?chuàng)建一個(gè)緩存對(duì)象,可以使用$cacheFactory通過(guò)一個(gè)ID和capacity.其中,ID是一個(gè)緩存對(duì)象的名稱,capacity則是描述緩存鍵值對(duì)的最大數(shù)量. 1.
MySQL數(shù)據(jù)類型中DECIMAL的用法實(shí)例詳解 在MySQL數(shù)據(jù)類型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它們都有各自的作用,下面我們就主要來(lái)介紹一下MySQL數(shù)據(jù)類型中的DECIMAL類型的作用和用法. 一般賦予浮點(diǎn)列的值被四舍五入到這個(gè)列所指定的十進(jìn)制數(shù).如果在一個(gè)FLOAT(8, 1)的列中存儲(chǔ)1. 2 3 4 5 6,則結(jié)果為1. 2.如果將相同的值存入FLOAT(8, 4) 的列中,則結(jié)果為1. 2 3 4 6. 這表示應(yīng)該定義具有足夠位數(shù)的浮點(diǎn)列以便
siblings() 獲得匹配集合中每個(gè)元素的同胞,通過(guò)選擇器進(jìn)行篩選是可選的. jQuery 的遍歷方法siblings() $("給定元素").siblings(".selected") 其作用是篩選給定的同胞同類元素(不包括給定元素本身) 例子:網(wǎng)頁(yè)選項(xiàng)欄 當(dāng)點(diǎn)擊任意一個(gè)選項(xiàng)卡是,其他2個(gè)選項(xiàng)卡就會(huì)改變樣式,其內(nèi)容也會(huì)隱藏. 下面是html代碼.
總結(jié)
以上是生活随笔為你收集整理的oracle 触发器代码,Oracle触发器实例代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenGL ES 3.1 Androi
- 下一篇: 小众绿软|游戏:Lode Runner