oracle触发器问题

 

id pid
1 0
2 1
3 1

比如oracle表中数据是这样的,怎么定义触发器,比如,更改id=1的id时,使id=2,3的行的pid跟着更改

还有删除id=1的行,pid为1的行也删除

0
liuyinhuan0409
liuyinhuan0409 楼主来了也把问题给结了呗
接近 7 年之前 回复
扫码支付0.1元 ×
其他相关推荐
高并发场景下oracle触发器+序列产生序号的一些现象与思考
最近工作上因为在处理系统同步的时候遇到了一些问题,在解决过程中,发现了一些现象,所以在这里mark一下,我现有的残缺理论体系还无法支撑做出合理的解释,在网上找了一下,也没有找到类似的案例,还望各位大拿指点一二。 话不多说,直接上案例,在pl/sql上做的模拟。 原始案例(故障): 1.先创建一个表test,三个字段id,name,sno create table test(id i
被Oracle触发器给坑了
例行检查数据库AWR报告,有一条update语句执行多次,每次执行时间30多秒,这条SQL语句很简单,就是根据主键条件修改数据,主键个数是1到100之间。这个问题由来已久,只是偶尔出现。主键是varchar2,类似序列,由于之前有迁移过数据,特别在主键上为迁移的这部分数据加过标记,用肉眼看主键的分布是不均匀的。     第一次诊断:这个表有150万的数据,执行慢是因为update的时候没走到主键
Oracle中的触发器遇到的问题——编译但有错误
       今天遇到个奇怪的事情,写了个触发器,但是总是说是编译但有错误,刷新的时候,触发器报错。停用的时候也停用不了,对触发的表也不能插入数据,看了大半天原来是其中一条语句写错了,结合需求总结出了一点东西: 1、触发器命名要规范,尽量都用大写,如果其中有大写也有小写,则触发器报错不会明确提示哪错了(PS:这是自己遇到的) 上图的命名规则是不规范的 应该命名为: 2、需求 在一...
对oracle 触发器的一些见解
前些日子在某国企做数据库的时候被告知他们的oracle数据库里面不建议用trigger,说了一大堆理由,概括一下就是不稳定,可靠性低。 我一时间想不明白,既然Oracle这么顶级的数据库,如此成熟的产品,如果触发器不可靠的话早就该舍弃掉换做其他方式替代了。 今天我修改数据库表结构的时候终于发现了这个问题。   我有两张表A和B,A有一个触发器,作用是插入A表之前做一些操作然后把数据出发到B。
关于触发器死循环的问题
有如下触发器: CREATE TRIGGER tri_UpdateJobTime ON 招聘表 FOR UPDATE AS BEGIN UPDATE 招聘表 SET 更新日期=GETDATE() WHERE 招聘id=Inserted.招聘id END 按道理来讲,这个触发器会导致死循环,但是实际应用时,却没发现任何异样。 在查询分析器里,执行 Update 招聘表
oracle trigger 范了一个巨大的错误 递归了
CREATE OR REPLACE TRIGGER UPT_PARENTFUN AFTER UPDATE ON DAPS.UT_ROLEFUNC REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE v_parentid varchar2(50); v_count number; BEGIN if :n...
Oracle入门(十四.20)之创建DML触发器:第一部分
一、什么是DML触发器?DML触发器是执行SQL DML语句(INSERT,UPDATE或DELETE)时自动触发(执行)的触发器。 您可以通过两种方法对DML触发器进行分类:•执行时间:BEFORE,AFTER或INSTEAD触发DML语句。•它们执行的次数:一次对于整个DML语句(一个语句触发器),或者对于受DML语句影响的每一行一次(一行触发)。二、创建DML语句触发器CREATE [OR ...
Oracle触发器内部,插入时间格式,数据丢失问题!
最近在调触发器BUG,ROW行级更新,插入另外一张表,数据1W条,最终插入9399条,丢失601条,仔细检查触发器,触发没有任何问题,参数传递没有任何问题! 几天的检查发现,问题在于内部使用了insert插入,参数to_date传递上出现的问题。 当BEGIN开始,参数进行判断转换,最终转换成to_date,传递给下面的插入语句上出现了问题。 1.:NEW.下属性如果不是所需,进行判断转换成
ORACLE触发器的测试
1.打开并登录pl/sql,File->New->Test Window; 2.在出现的窗口中的begin后输入脚本,该语句应该能够调用存储过程、函数,或语句能触发触发器; 比如我为某个表users的insert操作建立了触发器,那么test中的语句就是 update TABLE1 或者 INSERT TABLE2 注意sql语句结尾不需要加分号。 3.这时候如果直接在测试窗口执行F9,不会进入调试状态,也不会执行上边的插入语句。需要在trigger右击,选中“添加调试信息”。
用PL/SQL Developer创建Oracle触发器以及触发器的一点点知识与出现的问题
本文将介绍如何使用PL/SQL Developer快速的创建一个触发器,应该明确的是鼠标的所有操作都是可以用代码实现的
Oracle触发器调用外部java
导入jar包和外部java代码 当导入Java文件时,可以用如下命令:   loadjava –u username/userpassword –v -resolve filename.java 当导入jar文件时,可以用如下命令:   loadj
oracle使用快照和触发器同步不同数据库中的表数据
假设有数据库db1和db2 , 表db1.t_task_msg, db2.t_task_msg 现在同步db1.t_task_msg数据到db2.t_task_msg 1, 在db2建立到db1的连接source_link [code="java"] create database link source_link    connect to db1_user identified ...
Oracle解决主键ID自增问题触发器序列--进阶篇
Oracle触发器解决插入时ID自增问题--进阶篇第一种 序列触发器自增第二种 直接用触发器自增ID 第一种 序列触发器自增 这个是流行的做法,废话不多说直接上码: --简单介绍一下序列参数的意思 CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1 ...
【Oracle】利用触发器,序列实现id自增长
如何实现插入数据之后,id自增长参考博客: http://www.cnblogs.com/hyzhou/archive/2012/04/12/2444158.htmlORACLE SEQUENCE用法在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence首先要有CREATE SEQUENCE或者CREATE ANY S
Oracle创建触发器详解及例子
触发器详解 1。触发器与触发该触发器的SQL语句同属于一个事务,触发器不允许发出任何事务控制语句,如 commit、rollback、savepoint或者set transaction,它只能随着外部事务的提交、回滚而提交、回滚。(但在oracle8i 以及更高的版本中,你可以创建作为自治事务而执行的触发器,在这种情况下,触发器可以做提交或回滚操作,而与触发该触发器的外部SQL所在的事务无关)
Oracle(触发器删除外键约束)
表grade,和表stu具有外键约束,数据表grade就不能随便删除数据 ,这时候就用触发器解决此类问题,即使有外键关联,也要删除。  --级联删除是指在建立外键约束时通过on delete cascade子句设置,这样在删除父表数据时,由父表数据关联的所有子表数据都会被同时删除 注意:触发器不能有事务,触发的过程中:事件(不能rollback) create or replace trig...
Oracle创建触发器的时候因为大小写编译出错
创建表的时候id写成了小写,如图: 创建触发器的时候使用了大写,如图: 结果会报一个错误:success with compilation error (创建成功但编译出错)如图: 一开始以为Oracle是忽略大小写问题的,没往这方面想,被卡住了很久。 结果最后只需把他们都小写或都大写就没问题了。
测试触发器时出现的错误
测试触发器报错
无法对sys拥有的对象创建触发器。
错误提示:ORA-O4O89:无法对sys拥有的对象创建触发器。 首先在tables里面找到该表,右键查看该表的properties,里面有owner。出现上面这种情况一定是owner为sys。 下面提供一种解决方法: 为当前登录用户创建名称为该表名称相同的表,数据从sys的表里面拷贝。如: CREATE TABLE TEST.person AS SELECT * FROM SYS.Persona...
oracle数据库删除触发器实例
请求表操作表: 用户信息表(person_tab)   种类: Before delete                功能描述: 关联删除所有外键指向该表的数据行,删除与人员关连的数据行        操作表: 日历提示信息表(calendarNote_tab) 公文基础信息表(documentBaseInfo_tab) AB角工作分工信息表(divideWork_tab) 公文
关于ORACLE触发器中存在CLOB字段不能同步数据解决方法
最近项目中与其它公司做对接的时候需要同步其它公司的数据,选择用触发器实时同步数据。当表中存在CLOB字段时,同步过来的数据中CLOB字段无数据。 在网上搜索了一大堆答案...
Oracle12--变异表(五十四)
啥是变异表 定义:当一张数据表执行了更新操作后,就成为了一张变异表; 问题:如果在变异表上设置了行级触发器,就会出现ORA-04091的异常; 示例1:通过一个程序来说明此问题。定义一张数据表 DROP TABLE info PURGE ; CREATE TABLE info( id NUMBER , title VARCHAR2(50)
Oracle 中重新编译无效的存储过程, 或函数、触发器等对象
Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效,至今原因都未查明。查询 dba_dependencies 视图可以看到存储过程所引用的对象,再就在 dba_objects 视图中可以看到对象的 cre
oracle数据库触发器(trigger)用法总结
http://yedward.net/?id=116   触发器的意思就是当我们对数据库对象(一般是表或视图)进行insert、update、delete操作的时候,这些操作会相应的触发一些事件的执行,通常要执行的事件被写成PL/SQL程序,那么这些数据库对象上的事件相关的程序就是触发器(trigger)。oracle数据库中,触发器分为before、after、instead of三种,其中
关于Oracle触发器新旧值判断容易搞混的问题
本文旨在记录触发的各种操作之间,对比 :old 和 :new 值的变化,方便在写触发器判断值的时候,容易混乱的问题。                例如我有一条记录               id  name     create_date               1   张三     2018-01-20 00:00:00                       1. 新增
oracle 触发器:条件判断自动执行某些任务,不仅仅用于自增id
实现功能:当某张表写入数据时,同时将处理后的数据写入另一张表 create or replace trigger TG_sale_warehousein_gh after insert ON t_sale_warehousein FOR EACH ROW declare yes number; begin select count(*) into yes from t_
oracle数据库实时同步(trigger的方式)
前段时间公司在做一个数据仓库,但是这个数据仓库很奇怪,他需求把实时变化的数据同步到本库。这个大大的增加了工作的难度。 当时让我提方案,我提出了OGG,dg,SymmetricDS,trigger,sqlldr,exp,megre 等方案 首先sqlldr和exp对于实时变化的表同步基本上是不可能的(除非一直不停的truncate),如果有哪位大神基于这两种做出来,希望能指点小弟 其次数据仓库
Oracle在触发器中自定义异常以及修改列的值
一:存储过程的定义     1>过程(多次编译 多次执行):        --过程实现计算器        declare p1 number:=1;        p2 number:=2;        sign varchar2(3):='-';        begin          if sign='+' then             syso(p1+p2);
ora-04080触发器:xxxxx不存在问题
问题由来 pl/sql触发器右键删除不了触发器名称加引号的 oralce触发器对大小写敏感 问题解决 手写命令删除触发器 drop triggers  "触发器名称" 起因 今天用软件自动生成了触发器,有些触发器有问题需要进行删除,如下图 于是想这简单嘛,右键进行删除,哦豁,然后上百度上谷歌也没看到是个啥原因,手动写sql 从左边复制触发器名字进行删除触发器也报错找不到 ...
【hibernate】与触发器一起运行
触发器的事件 1、插入事件 2、更新事件 3、删除事件 数据库触发器经常用来生成审计日志,对重要数据的更新记录事件,这种记录审计日志的办法简便,有很好的性能,缺点是不支持跨数据库平台。 触发器引起的问题及解决方法 问题: 触发器执行的操作对Session来说是透明的,如果触发器修改了对象的属性,Session无法检测到数据库中数据的变化,因此Session
Oracle12C--系统触发器(58)
系统触发器定义 定义:系统触发器用户监视数据库服务的打开,关闭,错误等信息的取得,或者监控用户的行为操作等; 语法: CREATE [OR REPLACE] TRIGGER 触发器名称[BEFORE | AFTER] [数据库事件] ON [DATABASE | SCHEMA][WHEN 触发条件][DECLARE] [程序声明部门;]BEGIN 程
oracle 触发器
oracle 触发器 oracle 触发器 oracle 触发器 oracle 触发器 oracle 触发器
Oracle使用序列和触发器实现自增ID
需求:         向表中插入记录时,使得某列能够自动插入ID,并且插入的ID是自增的。        我们可以先创建一个序列,例如 GOODS_GOODS_ID,然后每次使用如下SQL语句即可完成该功能, insert into Goods(GoodsID, name) values ( GOODS_GOODS_ID.nextval, '农夫烤鸡'); 若我们希望如下方式的SQL操作
使用Oracle触发器限制用户登录
使用oracle触发器限制用户访问的策略是,我有个用户u1/u1,我想限制该用户只能从指定IP访问,其他IP的访问都予以拒绝。
Oracle数据库用触发器实现两张表数据同步
编写触发器实现两张表数据同步,sql代码如下: [code="sql"] create or replace trigger buid_mend_manager after insert or update or delete on TMP_EIC_MEND referencing old as old_value new as...
oracle触发器创建完无效问题解决
最近因统计对表增删改操作统计要使用oracle的触发器,但是触发器创建完使用时报错 在网上找了好久终于找到了解决的方法。 1.找到触发器 可以看到触发器上面有个小红叉号,说明这个触发器是有问题的。 2.右键编辑(edit)  点击下面的报错日志,会自动定位到有错误的行上,我的是因为updating写成了updateing 3.改正 修改创建触发器的语句,重新创建一次触发器,...
Oracle触发器中的:new和:old的使用
:new— 触发器执行过程中触发表作操作的当前行的新纪录 :old— 触发器执行过程中触发表作操作的当前行的旧纪录   我们在使用:new或者:old的操作时需要注意以下问题:   1、 必须是行级触发器,因为:new或者:old是当前触发表操作的当前行的新数据或者旧数据,所以必须在行级触发器中才能使用。否则编译时会出现错误。   2、 当触发器被不同事件触发时,需要注意:
一个表上的多个触发器执行顺序问题
一个表上的多个触发器执行顺序问题 http://blog.csdn.net/daoyuly/article/details/3931025
oracle创建触发器的脚本在sqlplus中执行不了问题的解决
今天打项目补丁时,在数据库服务器上用sqlplus执行写好的触发器怎么就执行不了,也不报错。 结果折腾了很久,查到在sqlplus中执行床架触发器sql脚本需要在脚本最后加 /结束;果然啊,一个/让我折腾了小半天;希望童鞋们以后碰到能对你有帮助。
OGG 复制禁用触发器
1.首先,在目标端增加 DBOPTIONS DEFERREFCONST2.把OGG绑定到ORACLE 上面ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;3. 赋予权限:exec dbms_goldengate_auth.grant_admin_privilege('ogg','*',TRUE);exec dbms_...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计触发器 区块链问题