Oracle备份表数据触发器,把表中修改或删除之前的数据备份到另一张表中,并可查看操作类型,操作时间,操作字段

创建一张简单的测试表

create table linshi_20221104(id varchar2(90),name varchar2(90),md5 varchar2(200))

再给他创建一个备份表

create table linshi_20221104_ud(id varchar2(90),name varchar2(90),md5 varchar2(200),czlx varchar2(90),czsj date,czzd varchar2(4000))

创建一个md5函数--可以不加

CREATE OR REPLACE FUNCTION to_md5(input_string IN VARCHAR2)
RETURN VARCHAR2 IS
retval varchar2(30000);

BEGIN
  retval := convert(input_string,'ZHS16GBK');
  retval := convert(retval,'UTF8');
  retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING =>retval));
RETURN lower(retval);
END;

给测试表建一个md5触发器--可以不加

CREATE OR REPLACE TRIGGER linshi_20221104_MD5
  BEFORE INSERT OR UPDATE ON linshi_20221104
  FOR EACH ROW --对表的每一行触发器执行一次
BEGIN
  :NEW.md5  := UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.B
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,当表中包含大量数据,直接删除可能会变得非常慢。这是因为直接删除会涉及到许多操作,如删除索引、释放空间和更新相关的统计信息等。 当表中数据量较大删除操作会花费更多的时间来完成这些操作。此外,如果上有触发器、约束或外键等其他依赖关系,删除操作还会涉及到检查和处理这些依赖关系。 为了加快删除的速度,你可以考虑以下几点: 1. 使用TRUNCATE语句:与直接删除相比,使用TRUNCATE语句可以更快地删除表中数据。TRUNCATE语句是一种快速删除数据的方法,它通过释放空间来实现快速删除。 2. 禁用或删除约束和触发器:如果上存在约束和触发器等依赖关系,可以考虑在删除之前禁用或删除它们。这样可以避免对每一行进行逐个检查和处理。 3. 分批删除:如果表中数据量非常大,你可以考虑将删除操作分为多个批次进行。通过逐步删除部分数据,可以减少对系统资源的压力,提高整体删除速度。 4. 重新建立索引和统计信息:在删除后,重新建立相关的索引和统计信息可以提高之后的查询性能。 需要注意的是,直接删除会永久删除表中的所有数据,因此在执行删除操作之前,请确保你已经备份了重要的数据。另外,删除操作可能会对数据库性能产生一定的影响,建议在非高峰期执行删除操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值