百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

通过触发器截取插入Oracle的数据长度

ccwgpt 2024-11-23 12:07 27 浏览 0 评论

前一段时间做一批书卡,书卡有卡面数字和磁条号码组成,其中卡面数字即印制在卡片上的字符,磁条号码就是在刷卡机上刷出来的数据,这个数据进入系统之后会生成一个用户编号,最终参与结算的是用户编号,在xh_bookcard查询customer_id是可以支持到15位的,但是其参与结算的某张表中customer_id最大为10位,如果直接导入会提示数据过大无法插入,这个时候就可以用触发器达到将插入的数据实时截断的目的(文中数据已做脱敏处理,无任何价值)

--创建书卡明细表、添加注释设置主键和约束条件

create table xh_bookcard

(

card_id varchar2(32) not null,

customer_id varchar2(32) not null,

no_id varchar2(32) not null,

memo char(64)

) ;

comment on table xh_bookcard is '书卡明细表';

comment on column xh_bookcard.card_id is '磁条号码';

comment on column xh_bookcard.customer_id is '用户编号';

comment on column xh_bookcard.no_id is '卡面数字';

alter table xh_bookcard add constraint pk_xh_bookcard primary key (card_id, customer_id) ;

--创建触发器tri_xh_bookcard,一旦插入的customer_id长度大于10位,则截取9位并后缀z

create or replace trigger tri_xh_bookcard

before insert

on xh_bookcard

for each row

declare

begin

if length(:new.customer_id)>10 then

:new.customer_id:=substr(:new.customer_id,-9,9)||'z';

end if;

end tri_xh_bookcard;

创建好触发器之后,在All objects的Triggers中就能查到该触发器,我们可以在这里进行修改、删除,只是用界面化配置不符合东哥的性格

其中 create or replace trigge 触发器名 before/after 操作 on 表名 for 哪一行数据 declare 这个是固定格式,创建并说明什么时候触发该trigger

begin 到 end 这里是真真的写触发器,比方说这个触发器的意思就是说 如果 customer_id 长度大于10,则从后往前截取9位(第一个参数为负,说明从后往前截取)然后后缀一个字母z,至于这里为什么从后往前截取,是因为分析了该批次数据如果从后往前截取9位是没有重复的,但是从前往后截取有一些数据就会重复,原因也很简单,因为源数据第一位都是0嘛。

至于说这个触发器为什么是修改:new.customer_id,因为我们是要新插入数据是不会有 :old.customer_id,那么为什么要用before insert而不是after insert 呢,因为insert和触发器是要操作同一个表的同一条数据,如果after之后,这个数据就已经进入数据库了,是无法操作的,只有我们操作一条数据之后在另外一个表进行累加采用after

我们这个时候插入一条数据看看

我们发现这个数据是符合我们的预期的

我们失效(disable)掉这个触发器,再插入一行数据

失效掉触发器,则插入什么就是什么了,我们重新生效(enable)触发器

我们发现他胡汉三又回来了

删除触发器的命令是 drop trigger tri_xh_bookcard ; 我们执行之后会发现查看All objects的Triggers这里已经无此触发器了,插入数据再也不会被截断了

相关推荐

6个小众却逆天的App神器,个个都是黑科技的代表

你的手机上有哪些好用的软件?今天我就给大家分享6个小众却逆天的App神器,个个都是黑科技的代表!01*Via浏览器推荐理由:体积极小的浏览器,没有任何广告。使用感受:它的体量真的很小,只有702KB,...

合肥App开发做一个app需要多少钱?制作周期有多久?

在移动互联网时代,开发一款APP已成为企业数字化转型与个人创业的重要途径。然而,APP的开发成本与制作周期受功能复杂度、技术架构、团队类型等多重因素影响,差异极大。好牛软件将从这两个维度展开分析,帮助...

详解应对App臃肿化的五大法则

编者注:本文转自腾讯ISUX。先来看一张图:图上看到,所有平台上用户花费时间都在减少,除了移动端。观察身边也是如此,回家不开电脑的小伙伴越来越多。手机平板加电视,下班场景全搞定。连那些以前电脑苦手的...

实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统

需求背景春节活动中,多个业务方都有发放优惠券的需求,且对发券的QPS量级有明确的需求。所有的优惠券发放、核销、查询都需要一个新系统来承载。因此,我们需要设计、开发一个能够支持十万级QPS的券系...

8种移动APP导航设计模式大对比

当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦。这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来?也许我们对比和了解了其他一些...

数字资产支付 App 的技术框架

开发一款功能强大、安全可靠的数字资产支付App需要一个整合了区块链技术、后端服务、前端应用以及第三方集成的全栈技术框架。这个框架的核心在于保障数字资产的安全流通,并将其高效地桥接到传统的法币支付场...

从MyBatis到App架构:设计模式全景应用指南

从MyBatis到App架构:设计模式全景应用指南引言在企业级应用和服务端开发领域,MyBatis凭借其灵活、简洁、强大的ORM映射能力被广泛应用。而它之所以能拥有如此优秀的可扩展性和工程可维护性,正...

借Google Guava的启发,打造高扩展性App架构

借GoogleGuava的启发,打造高扩展性App架构一、引言:架构升级的“桥梁”与范式革新在软件开发领域,桥接模式(BridgePattern)和函数式编程(FunctionalProgram...

国际原子能机构与俄乌双方达成核安全框架协议

当地时间4月1日,国际原子能机构总干事拉斐尔·格罗西表示,他已与俄罗斯和乌克兰分别就乌克兰的核安保和安全达成了一个框架协议,包括在乌克兰核设施现场派驻少量国际原子能机构工作人员。(总台记者杨春)来源...

剖析 Web3 与传统网络模型的安全框架

在互联网技术的浪潮中,Web3以其独特的安全框架,与传统的Web2网络模型形成了鲜明对比。本文将深入探讨这两种网络模型在安全框架上的差异,并分析各自的优势和挑战。Web3的安全框架特点Web3...

《人工智能安全治理框架》1.0版今天发布

9月9日,记者从2024年国家网络安全宣传周主论坛获悉,全国网络安全标准化技术委员会发布《人工智能安全治理框架》1.0版。《框架》提出了包容审慎、确保安全,风险导向、敏捷治理,技管结合、协同应对,开放...

《人工智能安全治理框架》1.0版发布

来源:新华社新华社广州9月9日电(记者胡林果、王思北)2024年国家网络安全宣传周主论坛9日在广州举办。主论坛上,全国网络安全标准化技术委员会发布了《人工智能安全治理框架》1.0版。据悉,框架以鼓励...

每日分享- Spring 微服务框架如何搭建?

Spring微服务框架是一种轻量级的分布式应用程序框架,它由Spring框架提供支持,是一种用于构建和部署基于微服务架构的应用程序的解决方案。下面是一些关于如何搭建Spring微服务框架的简单步骤:安...

开源微服务编排框架:Netflix Conductor

简介:本文主要介绍netflixconductor的基本概念和主要运行机制。作者|夜阳来源|阿里技术公众号本文主要介绍netflixconductor的基本概念和主要运行机制。一简介ne...

树林中悬空的的简约框架别墅

侧面夜景侧面全景夜景正面全景庭院泳池景观正面近景正面全景正面远景侧面近景侧面远景正面远景近景侧面远景庭院泳池景观视野开阔的客厅空间视野开阔的客厅空间视野开阔的客厅空间平面图...

取消回复欢迎 发表评论: