PL/SQL에서 트리거의 간단한 사용

2315 단어
         
1.     
               、   PL/SQL  。             (Insert,update,delete)         ,Oracle                。

2.      
(1)	      
                   ,             。
(2)	     (FOR EACH ROW)
                。         old new     ,       。

3.      
(1)                
create or replace trigger insertEmp
before insert on emp
declare
begin
       if(to_char(sysdate,'day') in ('   ','   ')) then
              raise_application_error(-20001,'      ');
       end if;
end;

  :
SQL> insert into emp(empno,deptno) values(14,10);
 
insert into emp(empno,deptno) values(14,10)
ORA-20001:       
ORA-06512:   "TEST1.INSERTEMP", line 5
ORA-04088:     'TEST1.INSERTEMP'        


(2)              
create or replace trigger updateEmp
  before update on emp  
  for each row
declare
  -- local variables here
begin
  if :new.sal< :old.sal then
    raise_application_error(-20002,'              ');
    end if;
end updateEmp;

  :
SQL> update emp set sal=200 where empno=7369;
 
update emp set sal=200 where empno=7369
 
ORA-20002:               
ORA-06512:   "TEST1.UPDATEEMP", line 5
ORA-04088:     'TEST1.UPDATEEMP'        



(3)               5
create or replace trigger limite
  before insert on emp  
  for each row
declare
  -- local variables here
  cursor cl is select count(*) from emp group by deptno;
 emp_count emp.empno%type;
begin
  open cl;
  fetch cl into emp_count;
  if (emp_count>5) then
          raise_application_error(-20002,'        5 ');
  end if;
  close cl;
end limite;

 
create or replace trigger limite
before insert on emp  
for each row
declare
num number;
begin
select count(*) into num from emp where deptno=:new.deptno;
 if(num>=5) then
        raise_application_error(-20002,'        5 ');
 end if;
end limite;

          

좋은 웹페이지 즐겨찾기