主頁(yè) > 知識(shí)庫(kù) > oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)

oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)

熱門(mén)標(biāo)簽:廣州市400電話(huà)辦理 地圖標(biāo)注原件 南通防封外呼系統(tǒng)運(yùn)營(yíng)商 淮安自動(dòng)外呼系統(tǒng)開(kāi)發(fā) 語(yǔ)音電話(huà)機(jī)器人缺點(diǎn) 百變地圖標(biāo)注 語(yǔ)音電話(huà)機(jī)器人營(yíng)銷(xiāo)方案 修改高德地圖標(biāo)注 宜賓外呼系統(tǒng)廠(chǎng)家
用語(yǔ)言實(shí)現(xiàn)
好處:
1、可以減少對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(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)稱(chēng)入庫(kù)表)income,出庫(kù)金額表(以下簡(jiǎn)稱(chēng)出庫(kù)表)outlay,余額表balance
復(fù)制代碼 代碼如下:

income{
id number;
pay_amount number;(入庫(kù)金額字段)
}
outlay{
id number;
outlay_amount number;(出庫(kù)金額字段)
}
balance
{
id number;
balance number;(余額字段)
}

下面分別在入庫(kù)和出庫(kù)表中建立觸發(fā)器
入庫(kù)表(income):
復(fù)制代碼 代碼如下:

CREATE TRIGGER "AA"."TRI_ADD" AFTER
INSERT
OR DELETE ON "INCOME" FOR EACH ROW begin
if deleting then
update balance set balance = nvl(balance,0) - :old.pay_amount;
elsif updating then
update balance set balance = nvl(balance,0) - :old.pay_amount + :new.pay_amount;
else
update balance set balance = nvl(balance,0) + :new.pay_amount;
end if;
end;

出庫(kù)表(outlay):
復(fù)制代碼 代碼如下:

CREATE TRIGGER "AA"."TRI_CUT" AFTER
INSERT
OR DELETE
OR UPDATE ON "OUTLAY" FOR EACH ROW begin
if deleting then
update balance set balance = nvl(balance,0) + :old.outlay_amount;
elsif updating then
update balance set balance = nvl(balance,0) + :old.outlay_amount - :new.outlay_amount;
else
update balance set balance = nvl(balance,0) - :new.outlay_amount;
end if;
end;

下面我解釋一下
oracle觸發(fā)器,觸發(fā)事件分為插入,刪除,更新列三種事件,分別對(duì)應(yīng)inserting /deleting/updating關(guān)鍵字
可以用if語(yǔ)句分別實(shí)現(xiàn)
復(fù)制代碼 代碼如下:

if inserting then
-----
elsif updating then
-----
elsif deleting then
------
end if;

NVL(eExpression1, eExpression2)
如果 eExpression1 的計(jì)算結(jié)果為 null 值,則 NVL( ) 返回 eExpression2。
如果 eExpression1 的計(jì)算結(jié)果不是 null 值,則返回 eExpression1。eExpression1 和 eExpression2 可以是任意一種數(shù)據(jù)類(lèi)型。
如果 eExpression1 與 eExpression2 的結(jié)果皆為 null 值,則 NVL( ) 返回 .NULL.。
這里插入和刪除就不說(shuō)了。主要是更新操作,更新操作要注意的是更新應(yīng)該是先減去舊值,在加上新值。
以上就是觸發(fā)器例子的實(shí)現(xiàn)。文章寫(xiě)的不好請(qǐng)大家諒解。
您可能感興趣的文章:
  • Oracle觸發(fā)器實(shí)例代碼
  • Oracle觸發(fā)器表發(fā)生了變化 觸發(fā)器不能讀它的解決方法(必看)
  • Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較
  • Oracle觸發(fā)器用法實(shí)例詳解
  • Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
  • oracle監(jiān)控某表變動(dòng)觸發(fā)器例子(監(jiān)控增,刪,改)
  • [Oracle] 如何使用觸發(fā)器實(shí)現(xiàn)IP限制用戶(hù)登錄
  • oracle 存儲(chǔ)過(guò)程和觸發(fā)器復(fù)制數(shù)據(jù)
  • oracle 觸發(fā)器 學(xué)習(xí)筆記
  • 詳解oracle中通過(guò)觸發(fā)器記錄每個(gè)語(yǔ)句影響總行數(shù)

標(biāo)簽:襄陽(yáng) 南平 通化 股票投資 池州 南平 嘉峪關(guān) 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)》,本文關(guān)鍵詞  oracle,觸發(fā)器,實(shí),現(xiàn)出,入庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章