很多時候需要在觸發器中對觸發表進行查詢,但在行級觸發器中是不允許的。
下面用HR用戶的employees表進行簡單的說明。
虛擬需求:對新加入的員工的工資和更新員工的工資時,不能設置為比該員工的上司的工資高。
首先,建立一個after的行級觸發器
然後,運行insert語句和update語句都報
ORA-04091: 表 HR.EMPLOYEES 发生了变化, 触发器/函数不能读它
如下:
這時就需要另一種方法了。
首先,需要創建一個包(Package)來保存員工的上司ID和員工的新工資。
然後,從新創建一個行級觸發器和語句級觸發器。
測試
這樣就可以用觸發器作出這樣的約束了。