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. css 两边是线,中间文字的多种实现方法

    <div class="soild_text_one"> <fieldset> <legend>历史活动一</legend> < ...

  2. opensns的URL模式

    URL模式 如果我们直接访问入口文件的话,由于URL中没有模块.控制器和操作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的: htt ...

  3. termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed - 获取和设置终端属性,行控制,获取和设置波特率

    SYNOPSIS 总览 #include <termios.h> #include <unistd.h> int tcgetattr(int fd, struct termio ...

  4. AD库转换为KiCAD库的方法

    AD库转换为KiCAD库的方法 参照博主另外一篇文档: AD转换为KiCAD的方法,点击此处

  5. POJ-2888 Magic Bracelet(Burnside引理+矩阵优化+欧拉函数+逆元)

    Burnside引理经典好题呀! 题解参考 https://blog.csdn.net/maxwei_wzj/article/details/73024349#commentBox 这位大佬的. 这题 ...

  6. Vue 一些零零散散~

    1. F5刷新不会触发vue的destroyed事件. 2. computed 的 vuex 数据 ------>   beforeCreated: undefined   /    creat ...

  7. oscache缓存

    oscache 使用总结 Posted on 2009-05-22 22:45 青果 阅读(1270) 评论(2)  编辑  收藏 所属分类: 技术点滴  前阵子对公司网站进行了性能优化,其中,有一项 ...

  8. leetcode-13双周赛-1256-加密数字

    题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...

  9. Java分支结构

    Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含 ...

  10. 揭秘阿里云EB级大数据计算引擎MaxCompute

    日前,全球权威咨询与服务机构Forrester发布了<The Forrester WaveTM: Cloud Data Warehouse, Q4 2018>报告.这是Forrester ...