oracle 触发器(根据条件修改插入后的某个字段值)
背景:
有一类轨迹数据来源于第三方接口,但接口推送的数据差一个轨迹描述字段(即对该条活动轨迹数据的各个字段拼接一下作为描述),叫双方研发重新改接口太浪费时间,所以想到利用触发器来解决,之前没写过触发器,于是现学现用,顺便做个笔记
触发器语法
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;
语法解释:
trigger_name:触发器名称
before | after : 指定触发器是在触发事件发生之前触发还暗示发生之后触发
trigger_event:触发事件,在DML触发器中主要为insert、update、delete等
table_name:表名,表示发生触发器作用的对象
for each row:指定创建的是行级触发器,若没有该子句则创建的是语句级触发器
when trigger_condition:添加的触发条件
trigger_body:触发体,是标准的PL/SQL语句块
create or replace trigger RYGL_YSCLKK_INSERT_HDXXMS --创建或更新触发器RYGL_YSCLKK_INSERT_HDXXMS
before insert --插入前触发
on t_ry_gjxx --作用在t_ry_gjxx表
for each row --行级触发
declare
xming varchar2(50); --创建一个变量,因为对面没传了身份证没传名字,所以后续得去查名字赋值给这个变量
begin --开始
if :new.dtxxlx='YSCLKK' and :new.gjtszt='2' and :new.sfzh !='000000000000000000' and :new.hdfssj>'20191230000001' then --判断是否为借口推送数据且身份证是否是正常身份证号码
select xm into xming from t_ry_jbxx where sfzh=:new.sfzh; 利用接口传过来的身份证去本地数据库查询姓名并赋值给xming变量
:new.hdxxms:='您布控的车牌:'||substr(:new.bzhm,8,7)||'(姓名:'||xming||',身份证:'||:new.sfzh||')于'||to_char(to_date(:new.hdfssj,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')||'通过'||:new.fsdshcs; --拼接活动描述字符串并赋值给hdxxms字段
:new.gjtszt:='0'; --将0赋值给gjtszt字段
:new.rksj:=sysdate; --将当前时间赋值给rksj字段
end if; --结束
end; --结束
小记:
select 字段名 into 变量 from 表/视图 where 条件 表示将某个查询结果赋值给变量
:new表示操作完成后的值
:=表示赋值
例如:
:new.rksj:=sysdate; 表示将当前时间赋值给rksj字段,注意是冒号+等号,单个等号是等职计算
oracle 触发器(根据条件修改插入后的某个字段值)相关推荐
- oracle触发器判断空值,oracle触发器加条件判断、dblink
--新增基站同步给电池组信息 create or replace trigger a_b_test after insert or update or delete on BJLT.BASESTATI ...
- oracle触发器中的after insert后继续触发,oracle触发器使用:after insert 与before insert的简单使用注意...
创建触发器时,触发器类型为after insert , 在begin中 Select fieldA into v_a from tableA; 执行到此句时,会出错: --弹出错误信息提示 --ORA ...
- oracle触发器中的after insert后继续触发,Oracle之后插入触发器
本Oracle教程解释了如何在Oracle中创建AFTER INSERT触发器的语法和示例.AFTER INSERT触发器表示Oracle将在执行INSERT操作之后触发此触发器. 语法 在Oracl ...
- oracle触发器不允许修改数据库,Oracle数据库使用触发器记录表数据修改记录
--日志记录表 CREATE TABLE T_LOG ( RID VARCHAR2(32 BYTE), NAME VARCHAR2(1000 BYTE), RQ DATE DEFAULT sysdat ...
- oracle有条件执行插入语句
oracle有条件执行插入语句 oracle 后面跟条件进行插入操作: insert into table_name (id,name)select '1', '2'from dual where n ...
- oracle 触发器的实例(转)
触发器使用教程和命名规范 目 录 目录 触发器使用教程和命名规范 1 1,触发器简介 1 2,触发器示例 2 3,触发器语法和功能 3 4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6 ...
- Oracle 触发器使用实例
触发器使用教程和命名规范 目 录 触发器使用教程和命名规范 1 1,触发器简介 1 2,触发器示例 2 3,触发器语法和功能 3 4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6,例三: ...
- mysql 事务 返回插入的值_Mysql同一个事务内记录成功插入后查询不出来
背景: 1)mysql:Ver 14.12 Distrib 5.0.45, for Win32 (ia32) 2)mysql odbc驱动:3.51.22 3)vs2005 4)客户端用ado,odb ...
- 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值
文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...
最新文章
- Python matplotlib可视化:在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)、水平条形图(horizontal bar)
- PMP 学习之一:PMP五大过程组十大知识领域47个子过程
- 数据结构:选择排序(Selection sort)
- 还原数据库:The backup set holds a backup of a database other than the existing database……
- webView 显示一段 html 代码
- linux切换目录使用命令,linux命令切换目录的使用方法
- 【JAVA 第四章 流程控制语句】课后习题 二维坐标距离 三角形判断等
- VC++2005项目的目录结构设置
- 【MySQL】MySQL 中的 dual表
- 互联网分层架构的本质
- java中日历类的用法_java日期类的用法
- 给各位读者朋友们、热心访问本博客的朋友们的一份新年贺卡
- 经典测试用例--水杯测试
- 递归统计项目中的非空白代码行数
- 整站php_小白同学的福利:PHP常见面试题(附答案)
- SpringBoot 之 @Transaction注解的类级别和方法级别的区别
- 【虚拟机\UBunTu】E45: 已设定选项 ‘readonly‘ (请加 ! 强制执行)
- virtualbox虚拟机安装及镜像安装
- 写得太好了,大约《越狱》批评(发布)
- Android apps 拍立知-功能实现2(相机/选择相册及图像识别调用)
热门文章
- 大数据将怎样改写人才命运
- C语言程序设计第四版 苏小红 习题答案 3.5
- cdo处理数据(自用笔记
- 攻防世界-supersqli(堆叠注入)
- wordpress搏客用户注册收不到邮件解决办法
- MySQL:介于普通读和锁定读的加锁方式,linux视频格式转换
- 如何卸载2345全家桶
- 单片机:ADC模数转换实验(内含ADC介绍+XPT2046芯片介绍+硬件电路设计+软件编程设计+原始代码)
- 考计算机专业课的生物信息学,《生物信息学》一种新的考试方式
- 台式机装Windows 7,笔记本装Windows Vista Service Pack 2,真正想久用的电脑装Windows XP...