關於trigger觸發器的介紹可以看我的這篇文章:
準備好後,儲存create trigger語句和在指令碼中全面測試觸發器的所有sql語句。
全面的測試意味著觸發器必須拒絕違反一致性約束的sql語句,並接受不違反一致性約束的sql語句。
如果sql語句沒有違反一致性約束,那麼觸發器必須不返回任何訊息。
使用sql * plus命令來列出包括已處理的所有sql語句的清單:
set echo on
set feedback on
新增下面的命令以避免突變錯誤:
pragma autonomous_transaction
set echo on
set feedback on
create
orreplace
trigger checkpronum
/*建立觸發器*/
before
insert
orupdate
on workson
for each row
/*更新前觸發行觸發器*/
declare
pragma autonomous_transaction;
total_enum number;
begin
select
count
(p#) into total_enum
from workson
where e#=:new.e#;
/*計算每個員工所從事的專案總數*/
if(total_enum =4)
/*if 如果員工參與4個以上的專案,拒絕操縱/修改 */
then
-20001
,'an employee cannot work on more than 4 projects.');
/*throw error message*/
endif
;end checkpronum;
/
測試行觸發器:
nsert into workson values
('00105'
,1001,10
)error report -
ora-
20001: an employee cannot work
on more than 4 projects.
ora-
06512: at "guest09.checkpronum"
, line 14
ora-
04088: error during execution of
trigger
'guest09.checkpronum'
--插入的員工因為 work on的project超過4個,成功觸發行觸發器
insert
into workson values
('00200'
,1001,10
);--插入的員工因為 work on的project沒有超過4個,所以插入成功
1row inserted.
資料庫系統mysql MySQL資料庫系統
1 mysql的特點 1 多執行緒 多使用者 2 基於c s 客戶端 伺服器 架構 3 簡單易用 查詢速度快 4 安全可靠 2 mysql編譯安裝 代表鍵盤上tab鍵 1 準備工作 解除安裝使用rpm方式安裝的mysql rpm e mysql nodeps 安裝cmake包 cd media ta...
資料庫系統 資料庫 資料庫管理系統 資料庫系統
繼續寫資料庫系統的文章,第二篇 資料庫 資料庫管理系統 資料庫系統。本文主要談談這三者之間的關係。下方,摘自老師的ppt,非原創。資料庫管理系統 從系統角度看資料庫管理系統 資料庫系統 資料庫指的是長期儲存在計算機內有組織的,大量的,相關聯的,可共享的資料集合。資料應當是有組織的,不應該是雜亂無章的...
資料庫系統之MongoDB Validations
json bson資料模型的半結構化和無模式屬性允許對資料庫結構進行非常靈活的操作。與此同時,資料庫結構的靈活和不受控制的操作也很容易造成資料庫結構和資料庫內容的破壞,例如,由於隨機錯誤。mongodb提供了在更新和插入 不是刪除 期間驗證文件 validate documents 的能力。驗證規則...