Oracle使用触发器和mysql中使用触发器的案例比较
一、触发器
1.触发器在数据库里以独立的对象存储,
2.触发器不需要调用,它由一个事件来触发运行
3.触发器不能接收参数
--触发器的应用
举个例子:校内网、开心网、facebook,当你发一个日志,自动通知好友,其实就是在增加日志的时候做一个出发,再向表中写入条目。
--触发器的效率很高
举例:论坛的发帖,每插入一个帖子都希望将版面表中的最后发帖时间,帖子总数字段进行同步更新,这时使用触发器效率会很高。
二、Oracle使用PL/SQL编写触发器
1.--PL/SQL创建触发器的一般语法
create[orreplace]triggertrigger_name {before|after} {insert|delete|update[ofcolumn[,column...]]}ontable_name [foreachrow] [wherecondition] --trigger_body; begin end;
2.--练习
--问题3.使用:old和:new操作符 createorreplacetriggertri_update after updateonemployees foreachrow begin dbms_output.put_line('更新前:'||:old.salary||'更新后:'||:new.salary); end; --问题2.编写一个触发器,在向emp表中插入记录时打印'hello' createorreplacetriggertri_update after insertonemp begin dbms_output.put_line('ok'); end; --问题1.一个helloworld级别的触发器 --创建一个触发器,在更新employees表的时候触发 createorreplacetriggertri_update after updateonemployees foreachrow--想在最后执行完打印一个ok,把这句话去掉 begin dbms_output.put_line('ok'); end; --执行 updateemployees setsalary=salary+1 wheredepartment_id=80
三、在MySql使用触发器
--假设有两张表board和article createtableboard( idintprimarykeyauto_increment, namevarchar(50), articleCountint ); createtablearticle( idintprimarykeyauto_increment, titlevarchar(50), bidintreferencesboard(id) ); --创建一个触发器 delimiter$$ createtriggerinsertArticle_trigger afterinsertonarticle foreachrow begin updateboardsetarticleCount=articleCount+1 whereid=new.bid; end; $$ delimiter; --当我们对article表执行插入操作的是后就会触发这个触发器 insertintoboardvalues(null,'test_boardname',0); insertintoarticlevalues(null,'test_title',1); --执行完这条插入语句后,board表中的articleCount字段值回+1;这个操作由触发器完成。
以上所述是小编给大家介绍的Oracle使用触发器和mysql中使用触发器的案例比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!