Oracle (触发器)execute immediate 'sql语句'

来源:互联网 发布:js删除tbody中的tr 编辑:程序博客网 时间:2024/06/05 08:07
create or replace trigger 名 before or after DML(Insert ,uodate ,delete)on 表名begin执行语句end;/对操作进行日志备份create or replace trigger 名 before insert on empbegininsert into emp_log(user,to_cahr(sysdate,'yyyy-mm-dd hh:mi:ss','insert);end;

 

create or replace trigger t_timelimitedafter insert or delete or update on empdeclarev_time varchar2(20);beginv_time:=to_char(sysdate,'hh24');if v_time=19 thenraise_application_error(-20009,'这个时段禁止此操作');end if;end;19时 不能进行 这些操作

 

create or replace trigger t_empbefore insert or update or delete on empbeginif inserting theninsert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'insert');elsif updating theninsert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'update');elsif deleting theninsert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'delete');end if;end;

 

EMP表删除 几行 就插入EMP2 几行 create or replace trigger t_new before delete on emp for each row begin if deleting then insert into emp2 values (:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno); end if; end; /行级触发器  :new.字段名  是 更改后新的内容            :old.字段名 是更改前的内容  要使用  new 和 old 必须先 加上 for each rowold和new  如果执行update 更改前的就是old 更改后的就是new 如果是删除 new 就是 空  如果插入 old 就是空

 

创建序列SQL> create sequence s_sstu;序列已创建。创建表---------------------------------------------------------------------SQL> create table stu(  2  id int,  3  name varchar2(20));创建触发器----------------------------------------------------------------- create or replace trigger t_stu before insert on stu for each row begin select s_sstu.nextval into :new.id from dual; end;/插入-------------------------------------------------- insert into stu(name) values('mt');

 

execute immediate 'sql语句'beginexecute immediate 'create table emp as select * from emp';end;可以执行 

 

原创粉丝点击