用語言實現
好處:
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會話中建立和示例一 個簡...