Oracle 觸發器的簡單命令

-- 建立觸發器的基本命令
create or replace trigger td after delete on ss
begin
  dbms_output.put_line('刪除成功');
end;

-- 建立觸發器的基本命令
create or replace trigger dd after insert on ss
for each row
--沒有變量可去掉聲明
--declare
begin
  dbms_output.put_line('成功插入數據');
end;

-- 場景-:複雜的安全性檢查
--raise--拋出的數據庫的錯誤
--raise_application_error:拋出的是應用程的錯誤  區間(-20000 ,29999)
create or replace trigger dg before insert or delete or update on ss
begin
  if to_char(sysdate,'day') in ('星期六','星期日') or
     to_number(to_char(sysdate,'hh24')) not between 9 and 18 
     then raise_application_error(-20001,'非工做時間禁止操做數據庫');
  end if;
end;


--數據確認
create or replace trigger fd before insert on scores
for each row
begin
  if :new.math < 0 
  or :new.chinese < 0
  or :new.english < 0
  then raise_application_error(-20002,'分數不能爲零');
  end if;
end;



--實現審計功能
create table info(
    infomation varchar2(45)
);

-- 不及格的學生所有信息插入info表
create or replace trigger ch after update on st
for each row
begin
  if :new.math < 60 
  or :new.english < 60
  then insert into info values(:new.math||','||:new.english);
  end if;
end;


--數據備份和同步(此處用表演示)
--建立備份表
create table st_copy as select * from test1;

create or replace trigger std after update on test1
for each row
begin
    --更新後表st的數據備份到表st_copy裏面
    update st_copy set age=:new.age,name=:new.name where id = :new.id;
end;
相關文章
相關標籤/搜索