Oracle利用触发器更新插入时某一列的值

先创建一个表Brzl

其中Pym是Brxm的首字母拼音

新建触发器前简单备注下触发器创建方法

create [or replace] tigger 触发器名 触发时间 触发事件
on 表名
[for each row]
begin
 pl/sql语句
end
其中:

触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发器执行;
after:表示在数据库动作之后触发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

开始操作

 1 CREATE OR REPLACE TRIGGER BRZL_PYM_Up
 2   before insert ON BRZL
 3   for each row
 4 Declare
 5   liPym varchar2(10);  --声明变量
 6 BEGIN
 7
 8   Select fgetpy(:new.brxm) into liPym from dual; -- :New 就是将要插入的那条记录
 9
10   :New.pym := liPym;
11
12 END BRZL_PYM;

效果如上;描述很差。直接看图操作;

原文地址:https://www.cnblogs.com/Ken2018/p/9404373.html

时间: 2024-07-30 15:27:53

Oracle利用触发器更新插入时某一列的值的相关文章

sql server触发器实现插入时操作另一张表

以前都是也得mysql,现在写sqlserver的触发器,感觉改动还是蛮大的 1.定义变量 #在mysql中变量直接这么定义就可以了 SET @VALUE = "111"; #在sql server中 declare @count int; #并赋值 set @count =0; #如果是查询,必须这么些 select @count = count(*) from WQ_MNINF_D_REAL where [email protected]; 2.判断 在mysql中,if判断的格式

oracle利用游标单条插入数据举例

原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47143731 背景 近日有哥们问我如何实现多条数据以单条的方式插入到目标表里,为解决这个问题,下面来做个小实验. 交流过程如下: 下面,我们举例用cursor来完成这个目标. (1).实验准备 首先,建立一个实验表,如下: createtable EMP ( empno   NUMBER(4)   not  null, ena

oracle利用触发器实现自增列

oracle没有自增列功能,mysql 和 sqlserver 分别用auto_increment和identity(1,1)来实现自增.oracle要实现只能通过序列实现,每次插入的时候通过取序列的值显示的给自增列,感觉有些不方便,这里使用触发器来代替,从而使插入的时候三者数据库在语法上一致,便于DAO代码的移植.下面是ORACLE实现示例,步骤如下:                                                                        

事物的一致性:向数据库中插入同一属性不同列的值,出现异常,致使出现异常前后,数据都无法插入

主要是使用connection的三个方法实现: 开始事物:取消默认提交:connection.setAutoCommit(false);//其可选择false和true 都成功提交事物:connection.commit(); 回滚事物:connection.rollback(); ------------------------------------------------------------------------------------------------------------

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

SQL 更新数据时触发器造成的性能问题

有时候,我们更新数据时,发现更新的时间很长,一般我们会想到查询的性能很慢,是索引引起的.但有时候不一定,触发器也会造成性能问题. 我们需要在更新数据时,先禁用触发器,然后再恢复 1 --禁用触发器 2 DISABLE TRIGGER 触发器名称 ON 表 3 --启用触发器 4 ENABLE TRIGGER 触发器名称 ON 表

mysql ON DUPLICATE KEY UPDATE重复插入时更新

mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM suppliers WHERE not exists(select * from clients where clients.c

在Oracle中更新数据时,抛出:ORA-01008: not all variables bound

在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都确定”, 就是有些变量没有指定,缺少变量参数, 最后发现是因为在写三层时少写了一个"new OracleParameter(":ID",userinfo.ID);" 导致的.

Oracle存在则更新,不存在则插入应用-merge

转: Oracle存在则更新,不存在则插入应用-merge 2017年01月11日 14:15:26 周星猩 阅读数 11354更多 分类专栏: Oracle 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hong10086/article/details/54342819 Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts