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表的觸發器triggerOracle觸發器
- PostgreSQL LIST分割槽實現:繼承表+函式+觸發器。SQL繼承函式觸發器
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- Oracle開發基礎-觸發器Oracle觸發器
- vue-router watch 監聽路由引數改變觸發函式Vue路由函式
- withoutEvents函式裡面的事件被觸發函式事件
- 頭歌資料庫實驗七:函式與觸發器資料庫函式觸發器
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- radio值變化時觸發的jqueryjQuery
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- 從建立程式到進入main函式,發生了什麼?AI函式
- 遮蔽在建構函式中初始化qtablewidget時觸發單元改變的槽函式(介面還沒有顯示出來)函式QT
- 瞭解使用mysql 的檢視、儲存過程、觸發器、函式....MySql儲存過程觸發器函式
- 2010 至 2020 年遊戲行業發生了哪些變化?遊戲行業
- MySQL在其版本迭代後Online DDL功能發生了哪些變化?MySql
- 教你如何檢視 Git 提交中發生了什麼變化Git
- 兩年來,互動視訊發生了什麼變化
- 【虹科乾貨】觸發器和函式:讓程式碼更接近資料觸發器函式
- MySQL怎麼利用函式和觸發器實現非主鍵自增?MySql函式觸發器
- mysql觸發器MySql觸發器
- D觸發器觸發器
- WPF基礎—佈局,樣式,觸發器觸發器
- ES6走走看看—字元到底發生了什麼變化字元
- 奉啟玉:“雙減”後,幼小銜接發生了哪些變化?
- CSS遮罩/定位下面元素不能觸發CSS遮罩
- 函式計算 HTTP 觸發器支援非同步,解放雙手搭建 Web 服務函式HTTP觸發器非同步Web
- 觸發器實現表資料自動更新觸發器
- 這個春節假期,國內iOS榜單發生了哪些變化?iOS
- 過去10年,開放世界遊戲發生了哪些變化?(下)遊戲
- 過去10年,開放世界遊戲發生了哪些變化?(上)遊戲
- “遊戲玩家”群體發生了變化,為開發者創造更多的機會遊戲
- SqlServer-觸發器SQLServer觸發器
- logon觸發器for dbaGo觸發器
- MySQL使用觸發器MySql觸發器
- 語句觸發器觸發器
- MySql-觸發器MySql觸發器
- sqlserver 列觸發器SQLServer觸發器
- 除錯觸發器除錯觸發器
- 建立MySQL觸發器MySql觸發器