大家好,又见面了,我是你们的朋友全栈君。
oracle触发器
系统默认用户
浏览 4438
oracle触发器怎么写?
通过编写数据库触发器,在HR数据库上实现下面的业务规则:1.如果某工种的最低工资进行上涨,则相应的员工的工资应自动增长…
通过编写数据库触发器,在HR数据库上实现下面的业务规则:
1.如果某工种的最低工资进行上涨,则相应的员工的工资应自动增长
推荐于2019-06-04 21:52:46
创建触发器,给触发器命名,在哪个表上的增删改进行触发,是否为行级触发
编写你的逻辑
编译检查是否有语法错误啥的
测试,这里的话,就是你某一个工种的最低工资增加,那属于这个工种的员工中原来是最低工资的也要增加,所以你要先把工种中最低工资查出来,根据工种号,查询属于该工种的人有哪些,把这些员工的工资查出来,再修改工种的最低工资,再查员工工资是否也增加了。
你这表也没有,我门也没有办法给你写一个很详细的。大致思路一般是这样
26905人赞同了该观点
系统默认用户
浏览 1933
ORACLE更新触发器的写法
我想写一个触发器,当BILL表中的status字段为50时,使得ACCOUNT字段更新为Y,请指导,谢谢!status字段的值是由其它值更新为50的…
我想写一个触发器,当BILL表中的status字段为50时,使得ACCOUNT字段更新为Y,请指导,谢谢!
status字段的值是由其它值更新为50的
推荐于2019-06-04 21:52:46
创建测试表:create table bill
(id int,
status int,
aacount varchar2(1));
一条测试数据:insert into bill values (1,49,’N’);
commit;
创建触发器:create or replace trigger t_update_bill
before insert or update on bill
for each row
begin
if :new.status=50
then :new.aacount:=’Y’;
end if;
end;
测试1:
将id=1那条数据的status改成50,然后检查结果(请自行测试,我这边验证无误了):update bill set status=50 where id=1;
commit;
测试2:
插入一条id=2,status为50,account为N的数据(请自行测试,我这边验证无误了):insert into bill values (2,50,’N’);
commit;
30014人赞同了该观点
系统默认用户
浏览 6660
Oracle数据库触发器问题
有Oracle数据库有两个一样表结构的表A,B,现在想写触发器实现当把多条数据同时导入表A时先清空原来表A里面的所有数据,并把新导入的数据同步到表B中去。现在我的触发器是这样写的crea…
有Oracle数据库有两个一样表结构的表A,B,现在想写触发器实现当把多条数据同时导入表A时先清空原来表A里面的所有数据,并把新导入的数据同步到表B中去。
现在我的触发器是这样写的
create or replace trigger A_trigger
before insert on A for each row
begin
insert into
B(id,num,name)VALUES(:new.id,:new.num,:new.name);
delete from A;
end ;
得出的结果是能把数据成功同步到B表中去,但是A表中只有导入的多数据中最后面的一条数据,这个要怎么改进才行?求教各位大神!谢谢
现在主要的问题是A导入多条数据时只剩下最后一条数据,这不是我想要的结果,我想要的是导入多条数据时表A里面的数据删除,新导入的全部保留。
展开
推荐于2019-06-04 21:52:46
你怎么界定哪些是新导入的呢?因为你说每次导入都把旧数据删除,你这次导入数据之后,对于下一次导入,你上一次的就是旧数据,所以应该删除也是没错的。
然后你这样写因为你的delete from a;是写在触发器里面,每导入一次 都会触发一次,所以A表每次都只会保留一条数据。
我有个建议就是把每天最新一天的数据当做新数据,这样你在触发器删除的时候可以加个日期判断,如果是当天的数据 就不删除,delete from a where date<>’今天日期’
5193人赞同了该观点
系统默认用户
浏览 2006
oracle触发器无效且未通过验证
BEGINtmpVar:=0;SELECTironout_seq.NEXTVALINTOtmpVarFROMdual;:NEW.Sequence_id:=tmpVar;EXCEPTIONWHENOTHERSTHEN–Considerloggingtheerrorandthenre-raiseRAISE;insertintoIRONOUT…
BEGIN
tmpVar := 0;
SELECT ironout_seq.NEXTVAL INTO tmpVar FROM dual;
:NEW.Sequence_id := tmpVar;
EXCEPTION
WHEN OTHERS THEN
— Consider logging the error and then re-raise
RAISE;
insert into IRONOUT@LADLETRACK61 (SEQUENCE_ID,TRAIN_ID,IRONOUT_STARTTIME,IRONOUT_ENDTIME,FLAGE,PORT,WEIGHT,CREATER,TAREWET,GROSSWET,JLCH,NETWET)
VALUES(:new.SEQUENCE_ID,:new.TRAIN_ID,:new.IRONOUT_STARTTIME,:new.IRONOUT_ENDTIME,:new.FLAGE,:new.PORT,:new.WEIGHT,:new.CREATER,:new.TAREWET,:new.GROSSWET,:new.JLCH,:new.NETWET);
END ;
展开
推荐于2019-06-04 21:52:46
31506人赞同了该观点
系统默认用户
浏览 6094
关于oracle触发器,根据条件插入并赋值的问题
比如现有一张表A,里面有id,name,phone,type(type值会有1,2,3),applytype(值会有11,12)和result5个字段。然后我现在需要创建一个触发器实时将数据插入到B表(插入B表的字段除了pho…
比如现有一张表A,里面有id,name,phone,type(type值会有1,2,3), applytype(值会有11,12)和result5个字段。然后我现在需要创建一个触发器实时将数据插入到 B表(插入B表的字段除了phone以外的字段),只要A表有一行数据就同步到B表,并且A表不会手动修改数据,同步条件是type为2且applytypoe=11时,再插入B表,并且将B表的result字段值设定为”Y”。
本人对触发器小白,请大神尽量详细的解答,谢谢!
展开
推荐于2019-06-04 21:52:46
6620人赞同了该观点
系统默认用户
浏览 7598
arcgis有没有类似oracle触发器的工具
就是当我删除或者增加一个要素时,数据库自己会备份一个相同的要素在另一个要素集里…
就是当我删除或者增加一个要素时,数据库自己会备份一个相同的要素在另一个要素集里
推荐于2019-06-04 21:52:46
oracle中触发器有三种
1.DML触发器
ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。
2 .替代触发器
由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。
3. 系统触发器
ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。
16939人赞同了该观点
系统默认用户
浏览 18
oracle 触发器修改数据问题
createorreplacetriggermodify_gradebeforeupdateonscforeachrowbeginif:new.grade<:old.gradethenraise_application_error>
create or replace trigger modify_gradebefore update on scfor each rowbeginif :new.grade<:old.grade thenraise_application_error if>
展开
推荐于2019-06-04 21:52:46
楼主你好:
每个触发器都会有自己的作用,而你上面触发器写的规则就是,当你对表scfor 中的grade列在更新(update)的时候,如果更新的值小于原先的值的时候,就会触发你自定义的异常错误代码信息。
所以,当你更新scfor.grade列值,对其进行赋值小的数值的时候,就会出现你上面的自定义错误信息报错,这也就是你这个触发器的作用。
24278人赞同了该观点
系统默认用户
浏览 5456
Oracle 创建触发器报错 pls-00103
各位大神好,小女因工作需要学习oracle,今天在学到创建触发器时,一直报错,请各位大神帮忙看一下,怎么修改。万分感谢!!!这是我建的account表的代码:CREATETABLEaccount(acct_n…
各位大神好,小女因工作需要学习oracle,今天在学到创建触发器时,一直报错,请各位大神帮忙看一下,怎么修改。万分感谢!!!这是我建的account表的代码:CREATE TABLE account (acct_num NUMBER(6), amount NUMBER(10,2));这是我建的触发器的要求,:要求:创建一个名为INS_SUM的触发器,触发的条件是向数据表account插入数据之前,输出提示信息。触发器代码:CREATE OR REPLACE TRIGGER INS_SUMBEFORE INSERTON accountBEGINIF INSERT THENDBMS_OUTPUT.PUT_LINE(‘下面将开始插入数据’);END IF;END;执行触发器代码后,报错:错误:PLS-00103: 出现符号 “INSERT”在需要下列之一时: ( – + case mod new not null continue avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe purge json_exis行:5文本:IF INSERT THEN请各位大神看一下,到底哪里错了,怎么修改。谢谢各位大神!!!
展开
推荐于2019-06-04 21:52:46
29276人赞同了该观点
系统默认用户
浏览 5411
Oracle 触发器和存储过程需要单独备份吗?
推荐于2019-06-04 21:52:46
看你具体需求了。无论是触发器还是存储过程,都是数据库的一个对象,所以你可以备份在一起,也可以分开。都可以的。
20347人赞同了该观点
系统默认用户
浏览 1040
oracle 怎么在执行查询语句的时候触发触发器?如果不能有办法实现相同的功能吗?
推荐于2019-06-04 21:52:46
查询的时候在程序里调用存储过程不是一样的么。
我们这里都已经禁止使用触发器、存储过程了,出了问题排查太困难,不知道是程序的问题还是DB那边的问题,找的头大。
所有逻辑放到程序那边。
16383人赞同了该观点
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157368.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...