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;
相關文章
- 觸發器—一個表更新資料時同步欄位到另一個表中觸發器
- 觸發器—一個表插入資料時其他欄位同步自增長欄位觸發器
- 利用oracle job定時向某個表插入資料Oracle
- SQL Server一個表新增資料,引發另一個表更新資料 的一個簡單觸發器例子SQLServer觸發器
- 把一個資料表中的資料匯入另一個表,觸發器和儲存過程的觸發器儲存過程
- Sql查詢 一個表中某欄位的資料在另一個表中某欄位中不存在的SQL
- mysql 從一個表中查詢,插入到另一個表中MySql
- 表中已有資料,將表中某個欄位為空的改為非空
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 定時從一個資料庫表中的資料儲存到另外一個資料庫中的表,而且怎麼處理重複的資料?...資料庫
- sql server 2000 一個表的資料插入到三個相關聯表中,一條一條的插入SQLServer
- 如何插入關聯表資料,或插入資料的時候執行,根據某欄位執行一個函式函式
- 如何查詢某個資料表中除某個欄位的所有資訊???
- oracle 觸發器-表同步Oracle觸發器
- Oracle insert all一次插入多個表中Oracle
- 一個表單中的資料新增到不同的資料表中
- Oracle中把一個查詢結果插入到一張表中Oracle
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- hive將查詢資料插入表中某欄位無資料Hive
- 更新大表中某個欄位的儲存過程儲存過程
- 向資料庫中全部表中增加一個欄位的SQL資料庫SQL
- 查詢一個表插入資料的時間,按BLOCK時間BloC
- Oracle中檢視某個表的建立時間 - [Oracle]Oracle
- Sql Server 匯入另一個資料庫中的表資料SQLServer資料庫
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- 獲取SQL資料庫中某個表中的所有欄位名稱的通用方法SQL資料庫
- SQL Server 觸發器中的兩個臨時表inserted及deleted,其資料從何而來?SQLServer觸發器delete
- PL/SQL Develop的一個Bug[Oracle資料庫中慎用小寫表名]SQLdevOracle資料庫
- 把一個一中的欄位更新另一個表中的t-sqlSQL
- MySQL 更新一個表裡的欄位等於另一個表某欄位的值MySql
- mongodb查詢資料庫中某個欄位中的值包含某個字串的方法MongoDB資料庫字串
- ORACLE表資料觸發器,僅保留一天的實時資料Oracle觸發器
- 如何dump某個表的資料快
- 利用觸發器監控對某個表操作的使用者資訊觸發器
- 閃回恢復一個表中的資料
- 從MySQL全庫備份中恢復某個庫和某張表MySql
- 查詢一個表的一列插入到另一個表
- 怎樣獲得資料表中某個欄位的第二個最大值