Oracle 触发器的使用(带案例详解),2024年最新一起刷完了这份1307页的Web前端面试宝典吧

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

自定义复杂的安全权限

提供审计和日志记录

启用复杂的业务逻辑

4.如何DML触发器?

===========

语法

语法:

create [or replace] trigger trigger_name

{before | after} trigger_event

on table_name

[for each row]

[when trigger_condition]

trigger_body

语法解释:

trigger_name:触发器名称

before | after : 指定触发器是在触发事件发生之前触发还暗示发生之后触发

trigger_event:触发事件,在DML触发器中主要为insert、update、delete等

table_name:表名,表示发生触发器作用的对象

for each row:指定创建的是行级触发器,若没有该子句则创建的是语句级触发器

when trigger_condition:添加的触发条件

trigger_body:触发体,是标准的PL/SQL语句块

**2:两个时间点  after before   除了使用序列+触发器实现自动增长为前触发,一般都是后触发

2:两个临时表:   :old  老表     :new  新表

2:两种执行模式  行级触发for each row   语句级触发

3:三种操作: insert update delete**

5,案例DML触发器

==========

建表插数据

–创建学生信息表

create table stuInfo

(

stuNo varchar2(6),

stuName varchar2(10),

stuSex varchar2(2),

stuAge int,

stuSeat int,

strAddress varchar2(255)

)

go

–创建学生成绩表

create table stuMarks

(

ExamNo varchar2(7),

stuNo varchar2(6),

writtenExam int,

LabExam int

)

go

–往学生信息表内插入测试数据

insert into stuInfo(stuNo, stuName, stuSex, stuAge,stuSeat,strAddress)

select ‘s25301’, ‘张秋丽’, ‘男’, 18,1, ‘北京海淀’ from dual union

select ‘s25303’, ‘李斯文’, ‘女’, 22,2, ‘河阳洛阳’ from dual union

select ‘s25302’, ‘李文才’, ‘男’, 85,3, ‘地址不详’ from dual union

select ‘s25304’, ‘欧阳俊雄’, ‘男’, 28,4, ‘新疆’ from dual union

select ‘s25318’, ‘梅超风’, ‘女’, 23,5, ‘地址不详’ from dual

go

–往学生成绩表内插入测试数据

insert into stuMarks(ExamNo, stuNo, writtenExam, LabExam)

select ‘s271811’, ‘s25303’, 93, 59 from dual union

select ‘s271813’, ‘s25302’, 63, 91 from dual union

select ‘s271816’, ‘s25301’, 90, 83 from dual union

select ‘s271817’, ‘s25318’, 63, 53 from dual

go

select * from stuInfo

select * from stuMarks

1,要求李斯文不能被删除

create or replace trigger ta --创建触发器名称

after delete --时间点 操作

on stuinfo --操作的表

for each row --行级触发

begin

if(:old.syuname=‘李斯文’) then

raise_application_error(-20002,‘李斯文是校长的儿子’)

end if;

end;

注:

old是临时表,和stuinfo中的数据一致

Oracle提供了1000个错误代码给我们-21000到-20000

删除李斯文的信息

delete stuinfo where stuname=‘李斯文’

执行删除会触发触发器然后报错

2,要求’打瞌睡’的不能被增加

create or replace trigger tb

after insert

on stuinfo

for each row

begin

if(:new.stuname=‘打瞌睡’) then

raise_application_error(-20003,‘睡觉的人不能增加’);

end if;

end;

增加打瞌睡的学生信息

insert into stuinfo values(‘s34345’,‘瞌睡’,‘女’,18,6,‘长沙’)

增加执行报错

3,要求李文才不能被修改

create or replace trigger tc

after update

on stuinfo

for each row

begin

if(:new.stuname=‘李文才’) then

raise_application_error(-20005,‘李文才不能被修改’);

end if;

end;

修改李文才的姓名为李无才

update stuinfo set stuname=‘李无才’ where stuname=‘李文才’

修改报错

4,三合一  insert update delete 要把前面的触发器删掉再运行

create or replace trigger td

after insert or update or delete

on stuinfo

for each row

begin

case

where inserting then

if(:new.stuname=‘李文才’) then

raise_application_error(-20005,‘李文才不能被修改’);

end if;

when updating then

if(:new.stuname=‘打瞌睡’) then

raise_application_error(-20003,‘睡觉的人不能增加’);

end if;

when deleting then

if(:new.stuname=‘李斯文’) then

raise_application_error(-20002,‘李斯文是校长的儿子’);

end if;

end case;

end;

5,联级触发

删除梅超风的时候将他的成绩一并删除

create or replace trigger ta

after delete

on stuinfo

for each row

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

JavaScript

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

前端面试题汇总

JavaScript

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-0E4M4uNk-1713331206037)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 触发器是一种特殊的存储过程,它会在指定的数据库操作(如 INSERT、UPDATE、DELETE)发生时自动执行。Oracle 触发器的主要作用是在数据库操作之前或之后执行一些业务逻辑。下面是 Oracle 触发器的用法和实例详解。 1. 创建触发器 Oracle 触发器的语法如下: ```sql CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name [FOR EACH ROW] [WHEN condition] DECLARE -- 声明变量 BEGIN -- 触发器的业务逻辑 END; ``` 其中,`trigger_name` 是触发器的名称,`table_name` 是要监视的表名,`INSERT`、`UPDATE`、`DELETE` 是监视的操作类型,`BEFORE` 和 `AFTER` 是触发器执行的时间点,`FOR EACH ROW` 意味着每行数据都会触发触发器,`WHEN condition` 是触发器执行的条件,`DECLARE` 是可选的,用于声明变量,`BEGIN` 和 `END` 之间是触发器的业务逻辑。 2. 触发器实例 以下是一个在 `employees` 表中插入数据时自动计算并更新 `salary` 列的触发器: ```sql CREATE OR REPLACE TRIGGER trg_update_salary AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE employees SET salary = salary + :new.salary * 0.1 WHERE employee_id = :new.employee_id; END; ``` 该触发器在 `employees` 表中插入数据之后自动执行,对插入的新行的 `salary` 列进行更新。 3. 触发器的应用场景 Oracle 触发器的应用场景非常广泛,例如: - 数据整性约束:在数据插入、更新或删除之前或之后验证数据的整性。 - 数据库日志:在数据插入、更新或删除之前或之后记录数据库的操作日志。 - 数据库备份:在数据插入、更新或删除之后自动备份数据库。 - 数据库监控:在数据插入、更新或删除之前或之后自动监控数据库。 - 数据库性能优化:在数据插入、更新或删除之后自动重新计算数据库的统计信息,以提高查询性能。 总之,Oracle 触发器Oracle 数据库中非常有用的功能,可用于实现各种业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值