oracle 觸發器 實現出入庫

2022-09-24 20:54:15 字數 2111 閱讀 8137

用語言實現

好處:

1、可以減少對資料庫的訪問。

2、可移植性好。

壞處:

1、操作起來考慮的東西較多,修改一處就要修改別一處。也就是說是相互關聯的。如果少改了某一處,很可能使資料不一致。

用觸發器實現

好處:

1、可以使程式設計師從複雜的相互關聯中解放出來,把精力放在複雜的業務上。

壞處:

1、可移植性差。

下面我就用乙個例子實現乙個簡單的出入庫。因為是例子表中所用到的字段很少。這裡的例子只做為拋磚引玉。

資料表為入庫金額表(以下簡稱入庫表)income,出庫金額表(以下簡稱出庫表)outlay,餘額表bal程式設計客棧awww.cppcns.comnce

複製** **如下:

income

outlay

balance

下面分別在入庫和出庫表中建立觸發器

入庫表(income):

複製** **如下:

create trigger "aa"."tri_add" after

insertcyuacgxe

or delete on "income" for each row begin

if deleting then

update balance s程式設計客棧et 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)cyuacgxe - :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.。

這裡插入和刪除就不說了。主要是更新操作,更新操作要注意的是更新應該是先減去舊值,在加上新值。

本文標題: oracle 觸發器 實現出入庫

本文位址:

ORACLE觸發器 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸發器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例乙個簡單的...

ORACLE的簡單觸發器實現

對於觸發器,我個人感覺能很好的解決兩個關聯表的資料關係,當乙個表改變的時候,所設定的觸發就會根據觸發器裡面的條件來改變要改變表的資料,主要還是ddl insert,delete,update 在其前面還要加上是 after before 來判斷是在之前還是之後。乙個簡單的觸發器是這樣的,比方有乙個e...

Oracle觸發器介紹 行級觸發器

行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸 髮器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例一 個簡...