oracle 触发器 插删改

问题描述

oracle 触发器 插删改
 create or replace trigger TG_attend_417
before delete or insert or update on attend_417
for each row
begin
    if inserting then
        update stud set sum_evaluation = sum_evaluation-2*(select count(*)from attend_417 where (attendance = 'la')-5*(select count(*)from attend_417 where attendance = 't')-1*(select count(*)from attend_417 where attendance = 'le')
        where sno=:new.sno;
    end if;
    if deleting then
        update stud set sum_evaluation = sum_evaluation-2*(select count(*)from attend_417 where (attendance = 'la')-5*(select count(*)from attend_417 where attendance = 't')-1*(select count(*)from attend_417 where attendance = 'le')
        where sno = :old.sno;
    end if;
    if updating then
        update stud set sum_evaluation = sum_evaluation-2*(select count(*)from attend_417 where (attendance = 'la')-5*(select count(*)from attend_417 where attendance = 't')-1*(select count(*)from attend_417 where attendance = 'le')
        where sno = :old.sno;
    end if;
end;

这是代码,la表示迟到,扣2分,t表示旷课,扣5分,le表示请假,扣1分,attendance 表示出勤类别

请问要怎么修改才是正确的?

解决方案

http://blog.csdn.net/indexman/article/details/8023740/
http://blog.csdn.net/justdo2008/article/details/4137779

时间: 2024-09-24 08:43:55

oracle 触发器 插删改的相关文章

oracle 插删改 触发器 过程

问题描述 oracle 插删改 触发器 过程 5.建立触发器,当对考勤表Attend表进行相应插入.删除.修改时,对stud表的sum_evaluation 数值进行相应的数据更新. 6.建立过程,生成某班级某时段(起.止日期)的考勤汇总表class_attend中各字段值,并汇总相应班级,将考勤分值的汇总结果写入到class表中的sum_evaluation中. 如题.希望能给点提示或者提供写参考资料 解决方案 http://blog.csdn.net/indexman/article/det

oracle 插删改 触发器

问题描述 oracle 插删改 触发器 create or replace trigger TG_attend_417 after insert or delete or update on attend_417 for each row begin if inserting then if :new.attendance = 'la' then update stud_417 set sum_evaluation = sum_evaluation-2; elsif :new.attendanc

Oracle触发器简单实现

[oracle]触发器简单实现   目标:实现实时备份uertest表数据至usertest_temp中,两表结构一致 解决:用oracle触发器实现同步   结果:   1.建表   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [sql] -- 简单的用户表  create table USERTEST  (    NAME     VARCHAR2(20) not null,    AGE      NUMBER,    ISDELETE VARCHAR2(4

使用Oracle触发器实现IP限制用户登录

在Oracle里,不像MySQL那样方便,可以直接在用户上进行IP限制,Oracle要实现用户级别的IP限制 ,可以使用触发器来迂回实现,下面是一个触发器的例子: create or replace trigger logon_ip_control after logon on database declare ip STRING(30); user STRING(30); begin SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user

Oracle触发器不能读取表的问题

问题描述 Oracle触发器不能读取表的问题 12.假设有这样一张用户表表结构如下:UserInfo(id ,username,userPass),希望向表中增加数据时,表中id列的数字自动生成.(选做) 1)第一步创建序列,要求开始的数字为1,每次递增1,按顺序产生序列值: 2)第二步创建一个触发器,向用户表中插入数据的时候触发触发器,在触发器内部调用序列并生成一个序列值赋值给表的id列. 触发器: create or replace trigger pro_id after insert o

MySQL、SQL Server 和 Oracle 触发器的创建

场景:当 users 表在 insert,update,delete 时,在 users_log 表中记录变更的 id MySQL触发器的创建 触发时机:BEFORE,AFTER 触发事件:INSERT,UPDATE,DELETE NEW 和 OLD 关键字: | action | NEW | OLD | |--------|----------------|----------------| | insert | 插入的新数据 | 无 | | update | 修改为的新数据 | 被修改的原数

c#利用webservice和wcf对oracle数据库增删改查,并判断两种方法的效率

问题描述 c#利用webservice和wcf对oracle数据库增删改查,并判断两种方法的效率 初学者,以前没有接触过webservice和wcf.现在遇到一个这样的项目,请大家给予帮助,提供源码,思路都行.当然,最好是代码了,亲,帮一个忙呗~ 解决方案 ws相对简单,WCF就是一把大牛刀,虽然很好,但是你要是杀鸡就得不偿失了.你是了解MVC的话,通信可以试试WebAPI.例子网上到处都是的

oracle触发器定时执行

问题描述 oracle触发器定时执行 请高手帮忙写一个触发器,当表中插入数据时,一段时间后(3分钟或者5分钟)自动 修改表中最新数据(有插入时间字段)的某个字段为false或者为1: 解决方案 等我回实验室,现在在上课 解决方案二: 在Oracle的触发器中执行DDL语句oracle 一个表上的多个触发器的执行顺序 解决方案三: 触发器是针对表格中有数据新增修改和删除时触发的程序,那只是一瞬间的事情,oracle有一个dbms_lock.sleep(10);休眠功能, 但是如果一次性新增了100

无效-oracle触发器中使用like语句,和hibernate共同使用时失效,怎么办?

问题描述 oracle触发器中使用like语句,和hibernate共同使用时失效,怎么办? 我定义了一个触发器,主要功能是做一个表数据的同步,如果直接用toad增加数据,触发器可正常执行,但是靠hibernate新增数据之类,触发器中like语句一直返回false的结果.求解决办法!! 下面是我的触发器: CREATE OR REPLACE TRIGGER NOTXSI AFTER INSERT ON ELEMENT REFERENCING NEW AS NEW OLD AS OLD FOR