Oracle 表 XXXXX 發生了變化, 觸發器/函式不能讀它.
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not delete: [com.rs.eservice.eworkhour.core.model.ExtendedWorkHourApplication#205]; uncategorized SQLException for SQL [delete from ES_EWHAPPLICATIONS
ORA-06512: 在 "ESERVICE.TRG_ES_EWHAPPLICATIONS", line 350
ORA-04088: 觸發器 'ESERVICE.TRG_ES_EWHAPPLICATIONS' 執行過程中出錯
; nested exception is java.sql.SQLException: ORA-20001: Error in inserting eleave log: trg_ES_EWHAPPLICATIONSORA-04091: 表 ESERVICE.ES_EWHAPPLICATIONS 發生了變化, 觸發器/函式不能讀它
ORA-06512: 在 "ESERVICE.TRG_ES_EWHAPPLICATIONS", line 350
ORA-04088: 觸發器 'ESERVICE.TRG_ES_EWHAPPLICATIONS' 執行過程中出錯
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
原因是因為, 你操作時,把資料庫裡面的記錄刪除掉了..然後,觸發器則不能再對當前欄位的裡面的內容進行操作..
程式碼如下:
CREATE OR REPLACE TRIGGER trg_ES_EWHAPPLICATIONS
AFTER INSERT OR UPDATE OR DELETE
ON ES_EWHAPPLICATIONS
FOR EACH ROW
DECLARE
entity_name es_log.entity_name%TYPE;
VERSION es_log.VERSION%TYPE;
primary_keys es_log.primary_key_string%TYPE;
attribute_name es_log.entity_attribute_name%TYPE;
beforeimage es_log.attribute_before_image%TYPE;
afterimage es_log.attribute_after_image%TYPE;
modifier es_log.updated_by_actor%TYPE;
modify_date es_log.transaction_action_datetime%TYPE;
creator es_log.updated_by_actor%TYPE;
create_date es_log.transaction_action_datetime%TYPE;
/******************************************************************************
NAME: trg_ES_EWHAPPLICATIONS
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2010-04-02 jumun.zhou 1. Created this trigger.
NOTES:
Automatically available Auto Replace Keywords:
Object Name: trg_es_holidays
Sysdate: 2011-02-22
Date and Time: 2011-02-22
Username: jumun.zhou
Table Name: ES_EWHAPPLICATIONS
Trigger Options: AFTER INSERT OR UPDATE OR DELETE ON trg_ES_EWHAPPLICATIONS
FOR EACH ROW
******************************************************************************/
BEGIN
entity_name := 'ES_EWHAPPLICATIONS';
attribute_name := 'ERROR';
primary_keys := :OLD.id;
BEGIN
IF DELETING
THEN
--這種寫法,則不能訪問,被刪除的記錄..所以才會報錯..
--SELECT modified_by,VERSION
-- INTO modifier,VERSION
-- FROM ES_EWHAPPLICATIONS where ES_EWHAPPLICATIONS.ID=:OLD.ID;
--改成下面的做法..就問題解決了..
modifier := :OLD.modified_by;
modify_date := :OLD.modified_date;
VERSION := :OLD.VERSION;
ELSIF updating THEN
modifier := :OLD.modified_by;
modify_date := :OLD.modified_date;
VERSION := :OLD.VERSION;
ELSE
-- Modifier, Modified Date, Creator, Creation Date, version
modifier := :NEW.modified_by;
modify_date := :NEW.modified_date;
creator := :NEW.created_by;
create_date := :NEW.creation_date;
VERSION := :NEW.VERSION;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
---------------------------------------------------------------------------
-- ID
---------------------------------------------------------------------------
attribute_name := 'ID';
beforeimage := :OLD.ID;
afterimage := :NEW.ID;
IF NOT (UPDATING AND beforeimage = afterimage)
THEN
sp_es_logging (entity_name,
VERSION,
primary_keys,
attribute_name,
beforeimage,
afterimage,
modifier,
modify_date,
creator,
create_date
);
END IF;
相關文章
- oracle 臨時表 解決 "表 *** 發生了變化,觸發器/函式不能讀"的問題Oracle觸發器函式
- ORA-04091 觸發器/函式不能讀觸發器函式
- 呼叫函式時,暫存器到底發生了那些變化?函式
- oracle 觸發器-表同步Oracle觸發器
- oracle變異表觸發器相關問題解決Oracle觸發器
- goldengate 觸發器導致oracle 表空間不能onlineGo觸發器Oracle
- PostgreSQL LIST分割槽實現:繼承表+函式+觸發器。SQL繼承函式觸發器
- Oracle觸發器觸發級別Oracle觸發器
- Oracle觸發器Oracle觸發器
- 觸發器中不能commit觸發器MIT
- oracle 建立表,序列,索引,檢視,觸發器,函式,儲存過程,定時器,包體Oracle索引觸發器函式儲存過程定時器
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- Oracle 過程(Procedure)、函式(Function)、包(Package)、觸發器(Trigger)Oracle函式FunctionPackage觸發器
- 禁止oracle表的觸發器triggerOracle觸發器
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- 根據業務寫觸發器(oracle觸發器片)觸發器Oracle
- ORACLE DDL觸發器Oracle觸發器
- Oracle之觸發器Oracle觸發器
- oracle ddl 觸發器Oracle觸發器
- PostgreSQL10.0preview功能增強-觸發器函式內建中間表SQLView觸發器函式
- Oracle開發基礎-觸發器Oracle觸發器
- ORACLE觸發器詳解Oracle觸發器
- Oracle登陸觸發器Oracle觸發器
- Oracle 登入觸發器Oracle觸發器
- oracle 觸發器 client 事件Oracle觸發器client事件
- DB2_建立在臨時表上的檢視-過程-表函式-觸發器DB2函式觸發器
- 破解儲存過程,函式,檢視,觸發器解密儲存過程函式觸發器解密
- vue-router watch 監聽路由引數改變觸發函式Vue路由函式
- oracle 批量刪除觸發器Oracle觸發器
- oracle 觸發器的例項Oracle觸發器
- Oracle 觸發器 限制DDL操作Oracle觸發器
- withoutEvents函式裡面的事件被觸發函式事件
- js程式碼觸發事件 函式列表JS事件函式
- Oracle認證 :Oracle中重新編譯無效的儲存過程,或函式、觸發器Oracle編譯儲存過程函式觸發器
- 頭歌資料庫實驗七:函式與觸發器資料庫函式觸發器
- oracle自動生成編譯所有函式、儲存過程、觸發器的語句Oracle編譯函式儲存過程觸發器
- Oracle檢視錶、儲存過程、觸發器、函式等物件定義語句Oracle儲存過程觸發器函式物件
- zabbix觸發器表示式詳解觸發器