oracle触发器怎么写(oracle触发器怎么写)

2023-07-21 22:20:02 76

oracle触发器怎么写(oracle触发器怎么写)

本文目录

oracle触发器怎么写


  1. 创建触发器,给触发器命名,在哪个表上的增删改进行触发,是否为行级触发

  2. 编写你的逻辑

  3. 编译检查是否有语法错误啥的

  4. 测试,这里的话,就是你某一个工种的最低工资增加,那属于这个工种的员工中原来是最低工资的也要增加,所以你要先把工种中最低工资查出来,根据工种号,查询属于该工种的人有哪些,把这些员工的工资查出来,再修改工种的最低工资,再查员工工资是否也增加了。

你这表也没有,我门也没有办法给你写一个很详细的。大致思路一般是这样


求一个简单的oracle 触发器 写法


创建两个表:

create table a
(stdid int,
stdname varchar2(10));
create table b
(stdid int,
stdname varchar2(10));

创建触发器:

CREATE OR REPLACE TRIGGER tr_insert 
   after insert
   ON a
   FOR EACH ROW 
BEGIN
   INSERT INTO b(stdid,stdname)
       VALUES(:new.stdid,:new.stdname);
END;

验证,在a表中插入数据:

insert into a values (1,’a’);
commit;

验证b表结果:


Oracle的触发器怎么写


我以前做的一个例子,你参考下吧
第八章 触发器(Trigger)
--格式:
create or replace trigger 名称
[after|before][delete|update|insert]
[on 表 | on schema]
[referencing new as 别名 old as 别名]
[for each row]
declare
....
begin
...
exception
....
end;
--创建一个delete类型行级触发器
--删除的一行数据保存在:old
create or replace trigger emp_delete_row_trigger
after delete
on emp
referencing new as n old as o
for each row
begin
dbms_output.put_line(’emp_delete_row_trigger called.’);
dbms_output.put_line(’删除员工:’ || :o.empno || ’ ’ || :o.ename);
end;
delete from emp where empno=7499;
delete from emp;
--创建一个insert类型行级触发器
--插入的一行新数据保存在:new
create or replace trigger emp_insert_row_trigger
after insert
on emp
for each row
begin
dbms_output.put_line(’emp_insert_row_trigger called.’);
dbms_output.put_line(’添加员工:’ || :new.empno || ’ ’ || :new.ename);
end;
insert into emp(empno,ename) values(1,’empxxx’);
--创建一个update类型行级触发器
--修改前的数据保存在:old
--修改后的数据保存在:new
create or replace trigger emp_update_row_trigger
after update
on emp
for each row
begin
dbms_output.put_line(’emp_update_row_trigger called.’);
dbms_output.put_line(’修改前:’ || :old.empno || ’ ’ || :old.ename);
dbms_output.put_line(’修改后:’ || :new.empno || ’ ’ || :new.ename);
end;
update emp
set ename=’xxxx’
where empno=7499;
--语句级触发器(update,delete,insert)
create or replace trigger delete_stmt_trigger
after delete
on emp
begin
dbms_output.put_line(’delete_stmt_trigger called.’);
end;
delete from emp;
--判断触发器类型
----------------------------------------------------------
--每进行一次交易,就要调用触发器,自动扣除或增加账户金额
----------------------------------------------------------
create table account
(
customerName varchar2(30) primary key,
cardID varchar2(8),
currentMoney number
);
insert into account values(’Daivd’,’10010001’,5000);
insert into account values(’Jason’,’10010002’,3000);
create table trans
(
transDate date,
cardID varchar2(8),
transType varchar2(10),
transMoney number
);
insert into trans
values(sysdate,’10010001’,’取款’,1000);
create or replace trigger trans_trigger
before insert
on trans
for each row
declare
v_currentMoney account.currentMoney%type;
begin
--判断类型
if :new.transType=’取款’ then
--取款
select currentMoney into v_currentMoney
from account
where cardID=:new.cardID;

if v_currentMoney 《 :new.transMoney then
raise_application_error(-20001,’余额不足’);
end if;

update account
set currentMoney=currentMoney-:new.transMoney
where cardID=:new.cardID;
else
--存款
update account
set currentMoney=currentMoney+:new.transMoney
where cardID=:new.cardID;
end if;
exception
when no_data_found then
raise_application_error(-20002,’无效的帐户’);
end;
--模式(schema)级触发器
create or replace trigger schema_trigger
before drop
on schema
begin
dbms_output.put_line(’schema_trigger called’);
dbms_output.put_line(ora_dict_obj_name);
dbms_output.put_line(ora_dict_obj_type);

if ora_dict_obj_name=’ACCOUNT’ then
raise_application_error(-20003,’ACCOUNT表不能被删除’);
end if;
end;
drop table account;
--ora_dict_obj_name 操作对象名称
--ora_dict_obj_type 操作对象类型
--启用触发器
alter trigger schema_trigger enable;
--禁用触发器
alter trigger schema_trigger disable;

ORACLE触发器怎么写


Create Or Replace Trigger tr_tablename
Before Insert Or Update Of leader_advice
On tablename
For Each Row
Begin
If :New.leader_advice Is Not Null Then
:New.doucument_status:=’已审批’;
Else
:New.doucument_status:=’未审批’;
End If;
End;

请教,oracle 触发器,怎么写


首先,触发器的触发是需要条件的,楼主的条件就是在b表中插入数据之后,触发触发器,并update
a
表中day

b
表中dayday,楼主可以这样写:
CREATE
OR
REPLACE
TRIGGER
update_a
AFTER
INSERT
ON
b
FOR
EACH
ROW
DECLARE
V_NO
a.no%type;
V_DAY
a.day%type;
BEGIN
SELECT
no,dayday
INTO
v_no,v_day
FROM
b;
UPDATE
a
SET
DAY
=
V_DAY;
WHERE
NO
=
V_NO;
END;

oracle的触发器怎么写


我以前做的一个例子,你参考下吧第八章触发器(Trigger)--格式:createorreplacetrigger名称[after|before][delete|update|insert][on表|onschema][referencingnewas别名oldas别名][foreachrow]declare.beginexception.end;--创建一个delete类型行级触发器--删除的一行数据保存在:oldcreateorreplacetriggeremp_delete_row_triggerafterdeleteonempreferencingnewasnoldasoforeachrowbegindbms_output.put_line(’emp_delete_row_triggercalled.’);dbms_output.put_line(’删除员工:’||:o.empno||’’||:o.ename);end;deletefromempwhereempno=7499;deletefromemp;--创建一个insert类型行级触发器--插入的一行新数据保存在:newcreateorreplacetriggeremp_insert_row_triggerafterinsertonempforeachrowbegindbms_output.put_line(’emp_insert_row_triggercalled.’);dbms_output.put_line(’添加员工:’||:new.empno||’’||:new.ename);end;insertintoemp(empno,ename)values(1,’empxxx’);--创建一个update类型行级触发器--修改前的数据保存在:old--修改后的数据保存在:newcreateorreplacetriggeremp_update_row_triggerafterupdateonempforeachrowbegindbms_output.put_line(’emp_update_row_triggercalled.’);dbms_output.put_line(’修改前:’||:old.empno||’’||:old.ename);dbms_output.put_line(’修改后:’||:new.empno||’’||:new.ename);end;updateempsetename=’xxxx’whereempno=7499;--语句级触发器(update,delete,insert)createorreplacetriggerdelete_stmt_triggerafterdeleteonempbegindbms_output.put_line(’delete_stmt_triggercalled.’);end;deletefromemp;--判断触发器类型------------------------------------------------------------每进行一次交易,就要调用触发器,自动扣除或增加账户金额----------------------------------------------------------createtableaccount(customerNamevarchar2(30)primarykey,cardIDvarchar2(8),currentMoneynumber);insertintoaccountvalues(’Daivd’,’10010001’,5000);insertintoaccountvalues(’Jason’,’10010002’,3000);createtabletrans(transDatedate,cardIDvarchar2(8),transTypevarchar2(10),transMoneynumber);insertintotransvalues(sysdate,’10010001’,’取款’,1000);createorreplacetriggertrans_triggerbeforeinsertontransforeachrowdeclarev_currentMoneyaccount.currentMoney%type;begin--判断类型if:new.transType=’取款’then--取款selectcurrentMoneyintov_currentMoneyfromaccountwherecardID=:new.cardID;ifv_currentMoney《:new.transMoneythenraise_application_error(-20001,’余额不足’);endif;updateaccountsetcurrentMoney=currentMoney-:new.transMoneywherecardID=:new.cardID;else--存款updateaccountsetcurrentMoney=currentMoney+:new.transMoneywherecardID=:new.cardID;endif;exceptionwhenno_data_foundthenraise_application_error(-20002,’无效的帐户’);end;--模式(schema)级触发器createorreplacetriggerschema_triggerbeforedroponschemabegindbms_output.put_line(’schema_triggercalled’);dbms_output.put_line(ora_dict_obj_name);dbms_output.put_line(ora_dict_obj_type);ifora_dict_obj_name=’ACCOUNT’thenraise_application_error(-20003,’ACCOUNT表不能被删除’);endif;end;droptableaccount;--ora_dict_obj_name操作对象名称--ora_dict_obj_type操作对象类型--启用触发器altertriggerschema_triggerenable;--禁用触发器altertriggerschema_triggerdisable;

Oracle 触发器怎么写


这个只能遗憾的告诉你,不能实现
因为触发器中不能运行 ddl语句和commit,rollback语句
所谓的ddl语句就是用语定义和管理数据库中的对象,如Create,Alter,Drop,truncate等,DDL操作是隐性提交的!
其实刚才写了一个,创建的时候没问题,但是往a里插入数据时报错
create or replace trigger t_add_col
after insert on a
for each row
begin
execute immediate ’alter table b add ’||:new.fieldname||’ varchar2(30)’;
end;

错误就是ora-04092,你可以看一下

oracle触发器怎么写(oracle触发器怎么写)

本文编辑:admin

更多文章:


announced(announced是什么意思)

announced(announced是什么意思)

本篇文章给大家谈谈announced,以及announced是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录announced是什

2024年6月29日 09:34

lol金属大师(LOL新版本金属大师改名了,金属大师改名后叫什么)

lol金属大师(LOL新版本金属大师改名了,金属大师改名后叫什么)

本文目录LOL新版本金属大师改名了,金属大师改名后叫什么LOL金属大师厉害不如何看待LOL金属大师的改版是不是太弱击杀ad仍需要大招,是否有可能加强lol里铁男就是金属大师他的强势期是多少级大概大概打法思路是什么LOL金属大师后期打得过武器

2024年7月15日 13:17

手机windows10模拟器(wins10simulator手机版为什么进不去)

手机windows10模拟器(wins10simulator手机版为什么进不去)

“手机windows10模拟器”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看手机windows10模拟器(wins10simulator手机版为什么进不去)!本文目录wins10simulator手机版为什么进不去Win1

2024年7月10日 17:32

豆客游戏平台下载(网吧现在玩CS一般都用什么对战平台)

豆客游戏平台下载(网吧现在玩CS一般都用什么对战平台)

这篇文章给大家聊聊关于豆客游戏平台下载,以及网吧现在玩CS一般都用什么对战平台对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录网吧现在玩CS一般都用什么对战平台求cs1.6正版官方网站的下载地址----买的也行,在哪买平板电脑

2024年8月31日 10:05

看小说的软件哪个最全(小说软件哪个好用免费最全)

看小说的软件哪个最全(小说软件哪个好用免费最全)

本篇文章给大家谈谈看小说的软件哪个最全,以及小说软件哪个好用免费最全对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录小说软件哪个好用免费最全

2024年8月21日 15:10

最好的手机炒股软件排名(模拟炒股APP排名前十有哪些)

最好的手机炒股软件排名(模拟炒股APP排名前十有哪些)

大家好,今天小编来为大家解答以下的问题,关于最好的手机炒股软件排名,模拟炒股APP排名前十有哪些这个很多人还不知道,现在让我们一起来看看吧!本文目录模拟炒股APP排名前十有哪些哪个炒股软件最好用炒股软件app排名炒股软件哪个最好炒股软件ap

2024年9月6日 00:21

qq农牧场助手(超强qq农牧场助手出现“未知错误“怎么办)

qq农牧场助手(超强qq农牧场助手出现“未知错误“怎么办)

本篇文章给大家谈谈qq农牧场助手,以及超强qq农牧场助手出现“未知错误“怎么办对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录超强qq农牧场

2024年7月1日 00:12

qq旋风下载器(qq旋风下载器要多少积分才能点亮)

qq旋风下载器(qq旋风下载器要多少积分才能点亮)

今天给各位分享qq旋风下载器要多少积分才能点亮的知识,其中也会对qq旋风下载器要多少积分才能点亮进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录qq旋风下载器要多少积分才能点亮怎么使用qq旋风下载怎么用QQ旋风

2024年7月23日 20:10

“淘宝特价版”上线,直接对标拼多多,你更看好谁?为什么淘宝会开一个特价版真的有便宜吗

“淘宝特价版”上线,直接对标拼多多,你更看好谁?为什么淘宝会开一个特价版真的有便宜吗

本文目录“淘宝特价版”上线,直接对标拼多多,你更看好谁为什么淘宝会开一个特价版真的有便宜吗如何评价淘宝推出的特价版,年轻人在上面买便宜货丢人吗淘宝推出淘宝特价版对淘宝天猫好吗淘宝特价版可以在淘宝上投诉吗怎么投诉淘宝特价版官方网站什么是淘宝特

2024年7月3日 14:15

教务管理系统入口(武汉理工大学教务管理系统入口)

教务管理系统入口(武汉理工大学教务管理系统入口)

本篇文章给大家谈谈教务管理系统入口,以及武汉理工大学教务管理系统入口对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录武汉理工大学教务管理系统

2024年9月7日 10:25

ps中文字体(请问ps怎么显示中文字体)

ps中文字体(请问ps怎么显示中文字体)

本文目录请问ps怎么显示中文字体如何用Photoshop打造属于自己的个性中文字体怎么在Photoshop中添加中文字体请问一下ps怎么显示中文字体如何在photoshop中添加中文字体PS怎么做手写中文字体ps如何显示中文字体PS字体在哪

2024年3月6日 00:55

御龙在天配置(御龙在天手游要什么配置的电脑可以开10个号)

御龙在天配置(御龙在天手游要什么配置的电脑可以开10个号)

本文目录御龙在天手游要什么配置的电脑可以开10个号求御龙在天多开电脑配置御龙在天多开电脑配置御龙在天电脑配置这样的配置能玩御龙在天吗御龙在天吃cpu吗御龙在天要求什么电脑配置御龙在天需要什么配置能玩御龙在天要求电脑配置多少御龙在天手游要什么

2024年3月2日 20:25

狂野飙车8游戏下载(ns狂野飙车8怎么下载)

狂野飙车8游戏下载(ns狂野飙车8怎么下载)

这篇文章给大家聊聊关于狂野飙车8游戏下载,以及ns狂野飙车8怎么下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录ns狂野飙车8怎么下载安卓狂野飙车8破解版哪里下载狂野飙车8安卓在哪下载咋那里下载狂野飙车8极速凌云旧版图标是

2024年9月1日 18:35

打拼音的软件下载(打出来的字带拼音是什么软件)

打拼音的软件下载(打出来的字带拼音是什么软件)

各位老铁们好,相信很多人对打拼音的软件下载都不是特别的了解,因此呢,今天就来为大家分享下关于打拼音的软件下载以及打出来的字带拼音是什么软件的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录打出来的字带拼音是什么软件

2024年8月14日 05:41

微信头像图片2021最新款(微信头像图片2021最火爆,微信用什么头像最吉利)

微信头像图片2021最新款(微信头像图片2021最火爆,微信用什么头像最吉利)

各位老铁们好,相信很多人对微信头像图片2021最新款都不是特别的了解,因此呢,今天就来为大家分享下关于微信头像图片2021最新款以及微信头像图片2021最火爆,微信用什么头像最吉利的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来

2024年7月16日 10:27

apple watch多少钱(Apple Watch多少钱一个)

apple watch多少钱(Apple Watch多少钱一个)

本文目录Apple Watch多少钱一个Apple Watch Series 6 多少钱applewatch换屏幕多少钱苹果手表多少钱苹果apple watch多少钱Apple Watch多少钱一个首先,AppleWatch分为三大类,运动

2024年6月9日 05:00

新浪手游助手(想在电脑上玩《小兵传奇》这款游戏该怎么做)

新浪手游助手(想在电脑上玩《小兵传奇》这款游戏该怎么做)

本文目录想在电脑上玩《小兵传奇》这款游戏该怎么做用新浪手游助手玩王者荣耀键盘怎么设置怎么在电脑上玩火影忍者新浪手游助手怎么设置电脑键盘操控游戏为什么win10新浪手游助手显示不出来最好用的安卓模拟器,求推荐新浪手游助手电脑怎么变为竖屏想在电

2024年2月9日 02:00

搜题软件哪个好用排行榜?拍一拍答案就出来软件,拍作业找答案解题神器

搜题软件哪个好用排行榜?拍一拍答案就出来软件,拍作业找答案解题神器

本文目录搜题软件哪个好用排行榜拍一拍答案就出来软件,拍作业找答案解题神器数学解题神器一扫就出答案,扫一扫解答数学题的软件解题神器一扫就出答案,答题神器一扫就出5秒出答案扫一扫数学解题软件有哪些,数学题扫一扫就知道答案有什么手机软件 如果你有

2024年2月3日 21:00

51单片机编程软件(学习单片机用什么软件)

51单片机编程软件(学习单片机用什么软件)

大家好,今天小编来为大家解答以下的问题,关于51单片机编程软件,学习单片机用什么软件这个很多人还不知道,现在让我们一起来看看吧!本文目录学习单片机用什么软件单片机c语言编程软件是什么51单片机用什么软件编程mixly支持51单片机吗单片机用

2024年7月23日 06:32

造梦西游2无敌版下载(你玩过的手游里面觉得哪一款最好玩)

造梦西游2无敌版下载(你玩过的手游里面觉得哪一款最好玩)

本文目录你玩过的手游里面觉得哪一款最好玩你玩过最长时间的游戏是什么,现在还在玩吗为什么印度将重金打造升级版苏-30MKI,号称超级苏霍伊,性能如何有没有造梦西游2无敌版啊,拜托了为什么玩了造梦西游2无敌版,网页版就玩不成了,一打开就该页无法

2024年6月7日 03:32

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索