oracle 觸發器,當一個表更新或插入時將資料同步至另個庫中的某個表中
有兩個表分別是 A使用者下的 T_SRC_WEATHER_TSPG欄位如圖,
B使用者下的t_src_weather 表,如圖:
要求,當A使用者下的T_SRC_WEATHER_TSPG表有插入或者更新資料時,同時將資料同步至B使用者下的t_src_weather表中,
建立觸發器,sql語句如下:
CREATE OR REPLACE TRIGGER weather_history_update -- weather_history_update為觸發器名稱
AFTER update or insert on Yjzhaccess.T_SRC_WEATHER_TSPG --AFTER 指定 觸發時間,on後跟表名稱,即當表Yjzhaccess.T_SRC_WEATHER_TSPG有更新或者插入時觸發時間
for each row --每一行
begin
insert into yjzhhistory.t_src_weather (ID,SSXQMC,SSXQDM,HISTIME,WEATHER) --指定插入的表及欄位
VALUES(:new.ID,:new.MC,:new.ID,:new.gxsj,:new.type); --將新插入的資料引入到該表中
end;
執行完後執行 INSERT INTO Yjzhaccess.T_SRC_WEATHER_TSPG values(23,'二十三大隊',66.66,16.66,'雪',66,sysdate)出現異常,報ora-04098:觸發器無效且未通過重新驗證通過plsql developer進入該觸發器發現編譯錯誤:
發現錯誤為沒有許可權,登入dba使用者將 B使用者下的該表的插入許可權賦給A使用者 sql為:grant insert on yjzhhistory.t_src_weather to yjzhaccess
賦予許可權後再執行測試更新語句,成功,此時觸發器執行觸發事件,兩個表中都有了對應的資料
例子:create or replace trigger InsertAISyn
after update ON REQ_PROC
FOR EACH ROW
DECLARE
OLDSTATUS VARCHAR2(64);
NEWSTATUS VARCHAR2(64);
STUDYUID VARCHAR2(64);
STUDYID VARCHAR2(64);
PATIENTID VARCHAR2(64);
Modality VARCHAR2(64);
StudyDesc VARCHAR2(64);
BEGIN
NEWSTATUS :=:new.STATUS;
OLDSTATUS := :old.STATUS;
STUDYUID:=:new.STUDY_INS_UID;
Modality:=:new.MODALITY;
STUDYID:=:new.REQ_PROC_ID;
StudyDesc:=:new.PARTOFCHECK;
IF NEWSTATUS ='已檢查' AND OLDSTATUS<>NEWSTATUS then
BEGIN
delete hhpacs.synaistaus where STUDYUID= STUDYUID;
if(Modality = 'CT') then
BEGIN
insert into hhpacs.SynAIStaus(STUDYUID,STUDYID,PATIENTID,Modality,StudyDesc,SynStatus)
values(STUDYUID,STUDYID,PATIENTID,Modality,StudyDesc,0);
END;
end if;
END;
end if;
END;
相關文章
- Sql查詢 一個表中某欄位的資料在另一個表中某欄位中不存在的SQL
- mysql 從一個表中查詢,插入到另一個表中MySql
- Oracle insert all一次插入多個表中Oracle
- 如何插入關聯表資料,或插入資料的時候執行,根據某欄位執行一個函式函式
- 如何查詢某個資料表中除某個欄位的所有資訊???
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- hive將查詢資料插入表中某欄位無資料Hive
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- MySQL 更新一個表裡的欄位等於另一個表某欄位的值MySql
- mongodb查詢資料庫中某個欄位中的值包含某個字串的方法MongoDB資料庫字串
- 如何找到某個 ABAP structure 某欄位的源頭來自哪個資料庫表Struct資料庫
- SQLSERVER查詢某個資料庫有幾張表SQLServer資料庫
- 觸發器實現表資料自動更新觸發器
- 在Django中,多資料操作,你可以編寫測試來查詢另一個資料庫伺服器中的資料,並將結果匯入當前Django專案的資料庫表中Django資料庫伺服器
- MySQL資料庫之mysql5.7基礎 檢視一個資料庫中的所有表MySql資料庫
- 【SQLServer】如何檢視某個資料庫中,每個table的資料量大小SQLServer資料庫
- ETL資料整合丨透過ETLCloud工具,將Oracle資料實時同步至Doris中CloudOracle
- Oracle如何把一個表匯出匯入到另一個伺服器上的另一個表裡Oracle伺服器
- 禁止oracle表的觸發器triggerOracle觸發器
- SQL2008查詢某資料庫中的某個值是否存在SQL資料庫
- 將一個Activity中的資料傳到另一個Activity的Fragment中的方法Fragment
- 當資料庫表無主鍵ID時,ORM這樣更新資料資料庫ORM
- mysql從一張表中取出資料插入到另一張表MySql
- 從MongoDB compass中匯出某個時間段的資料MongoDB
- openGauss 更新表中資料
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- 達夢資料庫如何將Excel表的資料複製到表中資料庫Excel
- .NET 資料庫大資料 方案(插入、更新、刪除、查詢 、插入或更新)資料庫大資料
- django 兩個表或多個表聯合查詢Django
- 多個excel檔案合併到一個檔案中的多個sheet表中Excel
- Firedac 在資料表中插入BLOB資料的方法
- Oracle OCP(07):顯示來自多個表的資料Oracle
- Oracle 如何快速的 duplicate 一個資料庫Oracle資料庫
- 分庫分表插入資料
- 將 SQL Server 資料庫還原到某個時點(完整恢復模式)SQLServer資料庫模式
- mysql資料表按照某個欄位分類輸出MySql
- SQL Server 批量生成資料庫內多個表的表結構SQLServer資料庫
- 查詢當前資料庫存在某個字串的儲存過程資料庫字串儲存過程