Oracle 创建触发器

create or replace trigger [email protected]@
  before insert or update or delete on @[email protected]
  REFERENCING OLD AS old_emp NEW AS new_emp
  for each row
begin
  --通过应用程序修改时,F_SYNC_UPDATE=null或F_SYNC_UPDATE=0,此时不需要更新F_SYNC_DATE 时间戳,也不需要记录删除记录
  if (:new_emp.F_SYNC_UPDATE is null) or (:new_emp.F_SYNC_UPDATE = 0) then
    --插入和更新操作,更新时间戳F_SYNC_DATE=systimestamp和F_SYNC_UPDATE=null
    if INSERTING or UPDATING then
      select systimestamp, null
        into :new_emp.F_SYNC_DATE, :new_emp.F_SYNC_UPDATE
        from dual;
    end if;
    if INSERTING then
      --把新增加的记录插入到操作记录表
      insert into DATA_SYNC_B_OPERATOR
        (t_name, o_type, o_date, VKEYS)
      values
        (‘@[email protected]‘, 1, systimestamp, @[email protected]);
    end if;
    if DELETING then
      --把删除记录的主键添加到操作记录表
      insert into DATA_SYNC_B_OPERATOR
        (t_name, o_type, o_date, VKEYS)
      values
        (‘@[email protected]‘, 3, systimestamp, @[email protected]);
    end if;
  end if;
end [email protected]@;
时间: 2024-12-28 10:03:15

Oracle 创建触发器的相关文章

Oracle数据库——触发器的创建与应用

一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数据库后才能向该表中执行DML操作.(第1题中,user是系统函数,返回当前用户.字符串中使用两个单引号表示一个单引号.) 要求:分别以system用户和scott用户对emp 表执行DML操作,试验触发器的运行效果. (1)在scott用户下创建触发器 语句: create or replace t

Oracle中创建触发器示例及注意事项

Oracle中创建触发器示例及注意事项 1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYID" NUMBER(10,0), "NAME" NVARCHAR2(30), "CODE" VARCHAR2(10 CHAR), "MNEMONICCODE" VARCHAR2(10 CHAR), &

Oracle的触发器、任务的创建方式

1.创建触发器 create or replace trigger trigger_name_xxx after delete or update or inserton table_name_yyy for each row[declare var_name_zzz type_name_ttt;]begin     if delete then        .....;    end if;    if update then        .....;    end if;    if i

Oracle创建自增ID

先创建序列sequence create sequence S_User minvalue 1 nomaxvalue  -- 或 maxvalue 999 start with 1 increment by 1 cache 20; -- 或 nocache 参考: oracle 序列中cache 有什么用途 然后创建触发器 create or replace trigger trg_user before insert on T_USER for each row begin select it

Oracle 创建普通用户,并赋予权限

采用sys or system / manager as sysdba; 连接数据库. 创建普通用户konglin: create user konglin identified by pwd_oracle; 删除用户, drop user konglin; 授予用户登录数据库的权限: grant create session to konglin; 授予用户操作表空间的权限: grant unlimited tablespace to konglin; grant create tablesp

Oracle的触发器

过去做项目. 都是前端后台的编码.由于数据库都让项目经理给写好的.自己对于数据库并没有多少优化,时间久了,反而把数据库的知识给淡忘了,近期的项目用到的是Oracle数据库,大家都知道.用到这个数据库.就是数据量比較大的项目了.对于优化就有必要了.因此自己下班后抽出时间复习一下,并把这个记录下来,不仅仅是分享给大家,还能以后自己再次复习.若我讲得不正确,请留言更正,本人会虚心接受并改更,这样才干进步. 1.什么是触发器 每当一个特定的数操作语句(insert,update,delete)在指定的表

oracle创建表相关

1 --创建表 2 create table person( 3 id number primary key, 4 name varchar2(40), 5 birth date 6 ); 7 --创建序列 8 create sequence person_id_seq 9 increment by 1 10 start with 1 11 nomaxvalue --不设置最大值 12 nocycle --一直累加,不循环 13 cache 10; 14 --创建触发器 15 create or

oracle利用触发器实现自增列

oracle没有自增列功能,mysql 和 sqlserver 分别用auto_increment和identity(1,1)来实现自增.oracle要实现只能通过序列实现,每次插入的时候通过取序列的值显示的给自增列,感觉有些不方便,这里使用触发器来代替,从而使插入的时候三者数据库在语法上一致,便于DAO代码的移植.下面是ORACLE实现示例,步骤如下:                                                                        

Oracle 创建自增列

类似SqlServer中的标识列   identity,Oracle实现同样的效果有点小复杂额,如下: 1 --1.创建表 2 create table Student( 3 ID integer not null primary key, 4 Name varchar2(40) not null, 5 Sex integer, 6 Address varchar2(100) 7 ) 8 tablespace MyTest_Data;--指明表空间 9 10 --2.创建序列 11 create