Oracle 触发器 删除操作时再查询本表数据 功能不正确
背影如下:
表名,WFGTEST
create table WFGTEST
(
NAME1 VARCHAR2(256) not null,
NAME2 VARCHAR2(256),
CAPACITY NUMBER(20,3)
)
表结构如下:
| NAME1 | NAME2 | CAPACITY |
|---|---|---|
| wfg | wfg | 1.000 |
| 1.000 | ||
| lxx | lxx | 2.000 |
| wly | wly | 2.000 |
现在想实现的效果如下:
如果这个表里相同的CAPACITY都被删除完时,向另一个表里插入一个计数,
如1.000被全部删除完时,向另一个表里插入记录如下,也就是说DELETE时,需要再查询本表是否还有与此次删除相同的CAPACITY,如果没有,那么就向另一个表里添加记录
| CAPACITYTYPE | DELETETIME |
| 1.000 | 2015/02/13 |
那么这个触发器应该怎么写呢?
CREATE OR REPLACE TRIGGER "TRIGGER_WFGTEST" AFTER
DELETE ON "WFGTEST" FOR EACH ROW
DECLARE nRMSFLAG number;
nFindSelft number; pragma autonomous_transaction; BEGIN
---------------------------------------------------------------------------------
IF DELETING THEN
SELECT COUNT(*) INTO nFindSelft FROM WFGTEST WHERE CAPACITY =:OLD.CAPACITY;
IF nFindSelft =1 THEN
INSERT INTO "WFGTEST2" VALUES(:OLD.NAME2,sysdate);
END IF;
commit;
END IF; END IF;
----------------------------------------------------------------------------------
--END IF;
/* PLEASE CHANGE THE NAME*/
END TRIGGER_WFGTEST;
下面有两个SQL代码测试,有不明白的地方请高手指导:
--这样执行的话,无法统计
delete from wfgtest where capacity = 1.000;
commit; --这样执行就能统计,请问为什么?
delete from wfgtest where name1 = 'wfg';
delete from wfgtest where name1 = 'qq';
commit;
Oracle 触发器 删除操作时再查询本表数据 功能不正确的更多相关文章
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
- Oracle记录表删除操作简单方法
最近项目中Oracle库中一个表log_gpackage有数据丢失现象,但因为没有启用归档,所以CDC和Dataguard都无法使用.google一下,最简单的方法,增加触发器处理逻辑: ---创建触 ...
- SFDC 删除操作时:验证或触发后续操作的一般解决方案
删除操作比较特殊,不能通过Workflow Rule和Process Builder,Validation Rule来Check和相应做后续操作. 目前调查只有两种工具可以监听到删除操作: Apex ...
- Oracle 跨库 查询 复制表数据 分布式查询
方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...
- oracle中删除某个用户下的所有表
一般的方法:先使用sql查询: SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLES ORDER BY TABLE_NAME; 将查询结 ...
- Oracle 跨库 查询 复制表数据
在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...
- MySQL 中根据A表的ID查询B表数据
例1:查询某个文章及其对应的评论(单个详情) ) FROM A; 例2:查询分类表中,每种分类各包含多少商品(汇总) SELECT category_id, (SELECT count(goods_i ...
- laravel利用subquery使左连接查询右表数据唯一查询
如:表a,连接表b,b中有多条符合查询的记录 1.建立需要的子查询 $sub = DB::table('b')->select(['aid'])->selectRaw('max(id) a ...
- Oracle和sql server中复制表结构和表数据的sql语句
在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...
随机推荐
- golang动态调用方法
package main import ( "fmt" "reflect" ) type YourT1 struct { } func (y *YourT1) ...
- An invalid form control with name='timeone[]' is not focusable.
在项目开发的时候 遇到了这样的报错 An invalid form control with name='timeone[]' is not focusable. 学习源头:https://segme ...
- NOIP2005普及组第3题 采药 (背包问题)
NOIP2005普及组第3题 采药 时间限制: 1 Sec 内存限制: 128 MB提交: 50 解决: 23[提交][状态][讨论版][命题人:外部导入] 题目描述 辰辰是个天资聪颖的孩子,他的 ...
- fatal: read error: Connection reset by peer解决办法
标签(空格分隔): ceph源码安装,git 问题描述: 源码安装ceph,克隆代码时提示如下错误: [root@localhost ~]# git clone git://github.com/ce ...
- 第七章 JVM体系结构与工作方式
JVM能跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台的软件和硬件之间的差异. 7.1 JVM体系结构 7.1.1 何谓JVM 模拟一个计算机来达到一个计算机所具有的计算 ...
- python学习(十七) 扩展python
c, c++, java比python快几个数量级. 17.1 考虑哪个更重要 开发速度还是运行速度更重要. 17.2 非常简单的途径:Jython和IronPython Jython可以直接访问JA ...
- js实现可拖动的布局
思路:采用flex布局,js即时修改固定列的宽度 注意:父元素需设置position:relative:因offsetLeft和offsetTop是相对于具有定位的(position:absolute ...
- 航图转换相关sql
--旧库列举所有类型航图 select distinct c.identifier airport_icao,d.sc_code chart_type,s.namefrom special_char ...
- Java的I/O流问题
一.流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. ...
- Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...