트리거 연습

2674 단어 트리거
문 트리거:
이른바 문장 트리거는 insert, 업데이트, delete의 전후 (before, after) 를 실행할 때 실행하는 각종 조작이다.

create table tt(
id number(2)
)

create table tt_log(
who varchar(16),
when date
)

create or replace trigger tt_tri
after insert or update or delete
on tt
begin
    insert into tt_log values(user,sysdate);
    end;
    /
    
insert into tt values(5)

select * from tt_log


행 트리거:
표 개인 키 값 id 증가 실현

create table person(
id number(2) primary key,
name varchar(16)
)

create sequence person_seq start with 1 

desc person_seq

create or replace trigger bifer_person_id_PK
before insert 
on person
for each row
begin
    select PERSON_SEQ.nextval
    into :new.id
    from dual;
 end;
 /
 
 desc dual
 
insert into person(name) values('aa')
 
insert into person(id,name) values(11,'bb')
  
insert into person(name) values('cc')
   
select * from person


instead of 트리거

  create table person(
id number(2) primary key,
name varchar(16)
)
 create or replace view person_view
   as
   select * 
   from
   person
   
   create or replace trigger update_person_view
   instead of update
   on person_view
   begin
        update person
        set id = :new.id,
            name = :new.name
        where id = :old.id;
   end;
   /
   
 update person_view set name='postino1111111' where id=1
 
 select * from person

          view   ,    dba         :grant create view to    

사용자 이벤트 트리거;
사용자가 소유한 대상을 삭제할 때, 대상의 이름과 유형, 삭제 시간을 로그 기록표dropped 에 기록합니다.objects

 create table dropped_objects(
 object_name varchar(32),
 object_type varchar(32),
 dropped_time date
  )
  
  create or replace trigger drop_object_tri
  before drop
 on test.schema
 begin
        insert into dropped_objects
        values (ora_dict_obj_name,ora_dict_obj_type,sysdate);
 end;
 /
 
 create table test2(
 id number(2)
 )
 
 create or replace view test2_view
 as
 select * 
 from test2
 
 drop view test2_view
 
 drop table test2
 
 select * from dropped_objects

좋은 웹페이지 즐겨찾기