資料庫系統之Row trigger專案練習

2021-10-14 10:41:55 字數 1566 閱讀 7262

關於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 的能力。驗證規則...