有兩個表分別是 A用戶下的 T_SRC_WEATHER_TSPG欄位如圖, B用戶下的t_src_weather 表,如圖: 要求,當A用戶下的T_SRC_WEATHER_TSPG表有插入或者更新數據時,同時將數據同步至B用戶下的t_src_weather表中, 創建觸發器,sql語句如下: CRE ...
有兩個表分別是 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
賦予許可權後再執行測試更新語句,成功,此時觸發器執行觸發事件,兩個表中都有了對應的數據