emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了;话不多数上问题以及SQL:

问题:

  

  1. 在ABONPB表上增加一个触发器,针对车牌号字段做update操作且new:传入的mduser字段为API,status为P时,向PA_BANK_REGNO_RECORD表中insert 一条记录,sync字段为0,修改次数为之前的次数加1,其余字段参考字段意义。(YC)
  2. 当insert进ABONPB时新案件时,同理lla_code为MA  为条件也要触发上班触发器,计数加一(后来添加)

更新:提交一个闪回查询找误删数据的SQL,类似的网上还有很多就不一一举例了;;;;;

  闪回查询::

select * from dba_source a where a.type='TRIGGER';
SELECT * from dba_source a where a.name LIKE '%ABONPB_%'; SELECT NAME, TEXT
FROM DBA_SOURCE AS OF TIMESTAMP TO_TIMESTAMP('2018-06-05 12:20:00', 'yyyy-mm-dd hh24:mi:ss')
WHERE OWNER = 'ACSPRD'
AND TYPE = 'PROCEDURE'
AND NAME LIKE '%ABONPB_UPDATE%';

触发器解决:

CREATE OR REPLACE TRIGGER ABONPB_UPDATE_20180615
BEFORE UPDATE OR INSERT ON ABONPB_20180615
FOR EACH ROW
DECLARE
IXEST INTEGER;
CHAGE INTEGER;
IXEST2 INTEGER;
CHAGE2 INTEGER;
BEGIN
IF updating('regnr') AND :OLD.MDUSR = 'API' AND :OLD.STATUS = 'P'AND :old.Regnr != :new.Regnr THEN
SELECT COUNT(1) INTO IXEST FROM EMAPIII.PA_BANK_REGNO_RECORD T WHERE T.IDCARD_NO = :OLD.POLICYNR AND T.CARD_NO = :OLD.VIN AND T.LASTNAME = :OLD.LASTNAME;
IF IXEST = 0 THEN
INSERT INTO EMAPIII.PA_BANK_REGNO_RECORD
(ID,
IDCARD_NO,
CARD_NO,
LASTNAME,
REGNO,
CHANGE_TIMES,
CHANGE_TIME,
CONTRACTCODE,
SERIE,
SYNC,
ACCTNO)
VALUES
(EMAPIII.PA_BANK_REGNO_RECORD_SEQ.NEXTVAL,
:NEW.VIN,
:NEW.POLICYNR,
:NEW.LASTNAME,
:NEW.REGNR,
0,
SYSDATE,
:NEW.LCO_LNA_CODE,
:NEW.SERIE,
0,
:NEW.SUBNUMBER); ELSE
SELECT T.CHANGE_TIMES INTO CHAGE FROM EMAPIII.PA_BANK_REGNO_RECORD T WHERE T.IDCARD_NO = :OLD.POLICYNR AND T.CARD_NO = :OLD.VIN AND T.LASTNAME = :OLD.LASTNAME; UPDATE EMAPIII.PA_BANK_REGNO_RECORD
SET REGNO =:new.Regnr, CHANGE_TIMES = CHAGE+1 , CHANGE_TIME = SYSDATE
WHERE IDCARD_NO = :OLD.POLICYNR
AND CARD_NO = :OLD.VIN
AND LASTNAME = :OLD.LASTNAME; END IF; END IF;
IF :new.Lla_Code='MA'THEN
SELECT COUNT(1) INTO IXEST2 FROM EMAPIII.PA_BANK_REGNO_RECORD T WHERE T.IDCARD_NO = :new.POLICYNR AND T.CARD_NO = :new.VIN AND T.LASTNAME = :new.LASTNAME;
IF IXEST2 = 0 THEN
INSERT INTO EMAPIII.PA_BANK_REGNO_RECORD
(ID,
IDCARD_NO,
CARD_NO,
LASTNAME,
REGNO,
CHANGE_TIMES,
CHANGE_TIME,
CONTRACTCODE,
SERIE,
SYNC,
ACCTNO)
VALUES
(EMAPIII.PA_BANK_REGNO_RECORD_SEQ.NEXTVAL,
:NEW.VIN,
:NEW.POLICYNR,
:NEW.LASTNAME,
:NEW.REGNR,
0,
SYSDATE,
:NEW.LCO_LNA_CODE,
:NEW.SERIE,
0,
:NEW.SUBNUMBER); ELSE
SELECT T.CHANGE_TIMES INTO CHAGE2 FROM EMAPIII.PA_BANK_REGNO_RECORD T WHERE T.IDCARD_NO = :new.POLICYNR AND T.CARD_NO = :new.VIN AND T.LASTNAME = :new.LASTNAME; UPDATE EMAPIII.PA_BANK_REGNO_RECORD
SET REGNO =:new.Regnr, CHANGE_TIMES = CHAGE2+1 , CHANGE_TIME = SYSDATE
WHERE IDCARD_NO = :new.POLICYNR
AND CARD_NO = :new.VIN
AND LASTNAME = :new.LASTNAME; END IF; END IF;
END;

ps:最后的最后一定要注意!!!!!!删除表时一定要备份该表的触发器、索引等,,,,,说多了都是泪啊!!!!!再然后,误删了没备份可以试试Oracle的闪回查询,运气好的话可以找回,,,

以上!!!

Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询的更多相关文章

  1. Oracle的回收站和闪回查询机制(一)

    实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...

  2. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...

  3. Oracle闪回查询恢复delete删除数据

    Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback q ...

  4. Oracle Flashback Technologies - 闪回查询

    Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...

  5. Oracle的回收站和闪回查询机制(二)

    上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...

  6. oracle闪回查询

    一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效 ...

  7. Oracle数据库验证IMP导入元数据是否会覆盖历史表数据

    场景:imp导入数据时,最终触发器报错退出,并未导入存储过程.触发器.函数. 现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据. 测试环境:CentOS 6.7 + Ora ...

  8. sql 表,字段(列),表数据(行)相关命令

    随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ 注: 以下所有操作都在登陆数据库后执行 命令use test;  test为数据库名 查看表 show tabl ...

  9. Oracle误操作--被提交后的数据回退(闪回)

    由于一时的粗心,在做update操作时,忘记了加where条件,导致全表数据被修改.此类错误实属不该!!特此记录一下!! 网上搜索Oracle数据回退操作,介绍如下: 闪回级别 闪回场景 闪回技术 对 ...

随机推荐

  1. ASE——第一次结对作业

    ASE--第一次结对作业 问题定义 很早就听说了MSRA的黄金点游戏,让大家写Bot来参加比赛看谁的AI比较聪明可以操盘割韭菜.深感ASE课程老师设计的任务太用心了,各种接口都准备好了,大家只用专注于 ...

  2. Android Service完全解析(下)

    转载http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要内容,包括S ...

  3. std::wcout输出1遍不输出

    std::wcout输出1遍不输出 程序明明在执行地方执行 wcout无法输出到控制台 cout就可以 添加中文支持即可

  4. readme.md常用格式的编写

    md是Markdown的缩写,md是一种易读易写的文本格式(easy-to-read, easy-to-write plain text format),并且可以很方便的转换成HTML格式显示在网页中 ...

  5. CSIC_716_20191217【事务、视图、触发器、存储过程、索引】

    事务: 事务保证对数据操作时的安全性,事务中的代码要么一起成功,要么一起失败. 事务以  start transaction  开始,中间可以写诸多个sql 语句对数据库进行操作, 以rollback ...

  6. java 居民身份证的校验

    import java.text.SimpleDateFormat; import java.util.Date; /** * 验证身份证号码 身份证号码, 可以解析身份证号码的各个字段, * 以及验 ...

  7. Oracle - 单表查询相关

    -- 单表查询 -- 查询表的所有数据, *代表所有 -- select * from [表名]; -- 查询表中指定字段的值 -- select [字段1], [字段2] ... from [表名] ...

  8. 基础(三):yum(RedHat系列)和apt-get(Debian系列 )用法及区别

    文章转载来自:http://blog.csdn.net/chengly0129/article/details/70169760 一般来说著名的linux系统基本上分两大类:1.RedHat系列:Re ...

  9. Java-Class-@I:lombok.extern.slf4j.Slf4j

    ylbtech-Java-Class-@I:lombok.extern.slf4j.Slf4j 1.返回顶部   2.返回顶部 1. package com.ylbtech.api.controlle ...

  10. (5)centos7 文件权限

    一. 目录信息 1.第一列 一共10位 (1)第1位表示 当为[ d ]则是目录 当为[ - ]则是文件 若是[ l ]则表示为连结档(link file): 若是[ b ]则表示为装置文件里面的可供 ...