Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询
emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了;话不多数上问题以及SQL:
问题:
- 在ABONPB表上增加一个触发器,针对车牌号字段做update操作且new:传入的mduser字段为API,status为P时,向PA_BANK_REGNO_RECORD表中insert 一条记录,sync字段为0,修改次数为之前的次数加1,其余字段参考字段意义。(YC)
- 当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表、数据、触发器找回 闪回查询的更多相关文章
- Oracle的回收站和闪回查询机制(一)
实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...
- Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...
- Oracle闪回查询恢复delete删除数据
Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback q ...
- Oracle Flashback Technologies - 闪回查询
Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...
- Oracle的回收站和闪回查询机制(二)
上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...
- oracle闪回查询
一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效 ...
- Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
场景:imp导入数据时,最终触发器报错退出,并未导入存储过程.触发器.函数. 现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据. 测试环境:CentOS 6.7 + Ora ...
- sql 表,字段(列),表数据(行)相关命令
随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ 注: 以下所有操作都在登陆数据库后执行 命令use test; test为数据库名 查看表 show tabl ...
- Oracle误操作--被提交后的数据回退(闪回)
由于一时的粗心,在做update操作时,忘记了加where条件,导致全表数据被修改.此类错误实属不该!!特此记录一下!! 网上搜索Oracle数据回退操作,介绍如下: 闪回级别 闪回场景 闪回技术 对 ...
随机推荐
- C# 连接Excel,获取表格数据,获取多个sheet中的数据,获取多个sheet名
/// <summary> /// 获取Excel内容. /// </summary> /// <param name="sheetName"> ...
- Tomcat 在IE中下载rar文件直接以乱码方式打开解决方案
这几天一直很纳闷,在Tomcat部署的网站中的下载文件中,如果文件是rar类型的,一点击下载rar文件就直接打开,并且出现乱码,右键另存为浏览器也是默认为html格式,一直以为是浏览器IE的问题,后来 ...
- mongodb的学习 (3)
聚合函数 - 添加基础数据:db.local.save({contry:'中国',name:'小明',score:77});db.local.save({contry:'中国',name:'小红',s ...
- 记录我个人对Telegram的了解
对Telegram(电报) 开始的了解是以为提供了Telegram API,就可以基于它进行开发自己的即时通讯(Instant Messaging)程序. 大概使用过: webogram 和 tele ...
- SQL SELECT TOP, LIMIT, ROWNUM
SQL SELECT TOP, LIMIT, ROWNUM SQL SELECT TOP 子句 SELECT TOP 子句用于指定要返回的记录数量. SELECT TOP子句在包含数千条记录的大型表上 ...
- Array排序和List排序
public class SortTest { public static void main(String[] args) { int arr[]={12,4,45,23,5,7,9,33}; Sy ...
- windows系统使用
1.访问局域网共享的文件,用 \\ip号 2.电脑的硬件名称(设备管理器中)是可以用软件修改的. 3.电脑中每一个连接网络的设备都有一个网卡地址(MAC地址),如无线网卡地址.有线网卡地址. 4.wi ...
- C语言新手写扫雷攻略2
接下来是游戏的功能设计,要有扫雷的基本功能,左键点击雷区,右键红旗标记,并且可以统计雷数,可以重新开始,以下是游戏的功能初始 void Game(void) { while (1) { if (FLA ...
- python 拆分字符串(3.0)
拆分字符串 1. def my_split(s, ds): l = [s] for d in ds: res = [] list(map(lambda x: res.extend(x.split(d) ...
- robotframework 时间控件的操作的几种方法总结。