Thứ Ba, 1 tháng 12, 2020

Quản lý Trigger trong Oracle Database

--1.CHECK
select trigger_name
, trigger_type
, table_name
, status
from dba_triggers
where owner = '&owner'
order by status, table_name

--2. TẠO Trigger:  
CREATE OR REPLACE TRIGGER drop_trigger 
   BEFORE DROP ON hr.SCHEMA 
   BEGIN
      RAISE_APPLICATION_ERROR (
         num => -20000,
         msg => 'Cannot drop object');
   END;
/

-- Tạo bảng tạm:
CREATE TABLE user1.XXX_TAB1 as
    SELECT a.*, '--' action,SYSDATE update_date FROM TAB1 a WHERE 1=0;    

-- TAB1
CREATE OR REPLACE TRIGGER user1.TAB1_BI
 BEFORE 
 INSERT
 ON TAB1
 REFERENCING OLD AS OLD NEW AS NEW
 FOR EACH ROW
Declare
BEGIN
    INSERT INTO user1.XXX_TAB1
            (ID,
            SER_TYPE,
            REG_DATE,
            STA_DATETIME,
            END_DATETIME,
            USER_NAME,
            STATUS,
            EXPIRE_DATE,
            SHOP_CODE,
            ACT_STATUS,
            ACTION,
            UPDATE_DATE) 
        VALUES            
            (:New.ID,
            :New.SER_TYPE,
            :New.REG_DATE,
            :New.STA_DATETIME,
            :New.END_DATETIME,
            :New.USER_NAME,
            :New.STATUS,
            :New.EXPIRE_DATE,
            :New.SHOP_CODE,
            :New.ACT_STATUS,
            'BI',
            SYSDATE);    
End;


CREATE OR REPLACE TRIGGER user1.TAB1_BU
 BEFORE 
 UPDATE
 ON TAB1
 REFERENCING OLD AS OLD NEW AS NEW
 FOR EACH ROW
Declare
BEGIN
    INSERT INTO user1.XXX_TAB1
            (ID,
            SER_TYPE,
            REG_DATE,
            STA_DATETIME,
            END_DATETIME,
            USER_NAME,
            STATUS,
            EXPIRE_DATE,
            SHOP_CODE,
            ACT_STATUS,
            ACTION,
            UPDATE_DATE) 
        VALUES            
            (:New.ID,
            :New.SER_TYPE,
            :New.REG_DATE,
            :New.STA_DATETIME,
            :New.END_DATETIME,
            :New.USER_NAME,
            :New.STATUS,
            :New.EXPIRE_DATE,
            :New.SHOP_CODE,
            :New.ACT_STATUS,
            'BU',
            SYSDATE);    
End;

CREATE OR REPLACE TRIGGER user1.TAB1_BD
 BEFORE 
 DELETE
 ON TAB1
 REFERENCING OLD AS OLD NEW AS NEW
 FOR EACH ROW
Declare
BEGIN
    INSERT INTO user1.XXX_TAB1
            (ID,
            SER_TYPE,
            REG_DATE,
            STA_DATETIME,
            END_DATETIME,
            USER_NAME,
            STATUS,
            EXPIRE_DATE,
            SHOP_CODE,
            ACT_STATUS,
            ACTION,
            UPDATE_DATE) 
        VALUES            
            (:New.ID,
            :New.SER_TYPE,
            :New.REG_DATE,
            :New.STA_DATETIME,
            :New.END_DATETIME,
            :New.USER_NAME,
            :New.STATUS,
            :New.EXPIRE_DATE,
            :New.SHOP_CODE,
            :New.ACT_STATUS,
            'BD',
            SYSDATE);    
End;

--3.ALTER TRIGGER
• Disabling Triggers: 
ALTER TRIGGER update_job_history DISABLE;
 
• Enabling Triggers:  
ALTER TRIGGER update_job_history ENABLE; 

--4.DROP TRIGGER
DROP TRIGGER hr.salary_check; 


KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH: 📧 Mail: binhoracle@gmail.com ☎️ Mobile: 0902912888 ⚡️ Skype: tranbinh48ca 👨 Facebook: https://www.facebook.com/BinhOracleMaster 👨 Inbox Messenger: https://m.me/101036604657441 (profile) 👨 Fanpage: https://www.facebook.com/tranvanbinh.vn 👨 Inbox Fanpage: https://m.me/tranvanbinh.vn 👨👩 Group FB: https://www.facebook.com/groups/OracleDBAVietNam 👨 Website: http://www.tranvanbinh.vn 👨 Blogger: https://tranvanbinhmaster.blogspot.com 🎬 Youtube: http://bit.ly/ytb_binhoraclemaster 👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi 👨 Linkin: https://www.linkedin.com/in/binhoracle 👨 Twitter: https://twitter.com/binhoracle 👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội #OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #oce #ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master