ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 几个触发器的例子

几个触发器的例子

原创 Linux操作系统 作者:season0891 时间:2008-08-14 12:08:11 0 删除 编辑

before 语句触发器

create or replace trigger tr_sec_emp
before insert or update or delete on emp
begin
 if to_char(sysdate,'DY','nls_date_language=american') in ('sat','sun') then
    raise_application_error(-20001,'不能在休息日操作!');
 end if ;
end ;

条件谓词

create or replace trigger tr_sec_emp
before insert or update or delete on emp
begin
 if to_char(sysdate,'DY','nls_date_language=american') in ('sat','sun') then
    case 
      when inserting then
         raise_application_error(-20001,'不能在休息日操作!');
      when updating  then
         raise_application_error(-20001,'不能在休息日操作!');
      when deleting  then
         raise_application_error(-20001,'不能在休息日操作!');
    end case;
 end if;
end ;


行触发器

create or replace trigger tr_emp_sal
after/before update of sal on emp
for each row
begin
if :new.sal < :old.sal then
   raise_application_error(-20001,'工资只涨不降');
end if;
end ;

限制行触发器

create or replace trigger tr_sal_change
after update of sal on emp
for each row
when (old.job='salesman')
declare 
v_temp int;
begin
-------
end;

系统触发器

create table log_table(
username varchar(20),
logon_time date,
logoff_time date,
address varchar2(20));
create or replace trigger tr_logon
after logon  on database
begin
  insert into log_table(username,logon_time,address) values   (ora_login_user,sysdate,ora_client_ip_address);
end;
/
create or replace trigger tr_logon
before logoff  on database
begin
 insert into log_table(username,logoff_time,address) value s(ora_login_user,sysdate,ora_client_ip_address);
end;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-426903/,如需转载,请注明出处,否则将追究法律责任。

上一篇: XA事务
请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    791
  • 访问量
    1933555