oracle 觸發器 實現出入庫

來源:互聯網
上載者:User

用語言實現
好處:
1、可以減少對資料庫的訪問。
2、可移植性好。
壞處:
1、操作起來考慮的東西較多,修改一處就要修改別一處。也就是說是相互關聯的。如果少改了某一處,很可能使資料不一致。
用觸發器實現
好處:
1、可以使程式員從複雜的相互關聯中解放出來,把精力放在複雜的業務上。
壞處:
1、可移植性差。
下面我就用一個例子實現一個簡單的出入庫。因為是例子表中所用到的欄位很少。這裡的例子只做為拋磚引玉。
資料表為入庫金額表(以下簡稱入庫表)income,出庫金額表(以下簡稱出庫表)outlay,餘額表balance 複製代碼 代碼如下:income{
id number;
pay_amount number;(入庫金額欄位)
}
outlay{
id number;
outlay_amount number;(出庫金額欄位)
}
balance
{
id number;
balance number;(餘額欄位)
}

下面分別在入庫和出庫表中建立觸發器
入庫表(income): 複製代碼 代碼如下: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;

出庫表(outlay): 複製代碼 代碼如下: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觸發器,觸發事件分為插入,刪除,更新列三種事件,分別對應inserting /deleting/updating關鍵字
可以用if語句分別實現 複製代碼 代碼如下:if inserting then
-----
elsif updating then
-----
elsif deleting then
------
end if;

NVL(eExpression1, eExpression2)
如果 eExpression1 的計算結果為 null 值,則 NVL( ) 返回 eExpression2。
如果 eExpression1 的計算結果不是 null 值,則返回 eExpression1。eExpression1 和 eExpression2 可以是任意一種資料類型。
如果 eExpression1 與 eExpression2 的結果皆為 null 值,則 NVL( ) 返回 .NULL.。
這裡插入和刪除就不說了。主要是更新操作,更新操作要注意的是更新應該是先減去舊值,在加上新值。
以上就是觸發器例子的實現。文章寫的不好請大家諒解。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.