您现在的位置是:课程教程文章
mysql触发器的缺陷分析
2023-12-13 23:58课程教程文章 人已围观
-
企业级MySQL DBA调优实战基础课程【马士兵
企业级MySQL DBA调优实战基础课程【马士兵了解课程详情扫描下方二维码,添加咨询小姐姐!... -
MySQL数据库项目实战
MySQL数据库项目实战附上柠檬班offer,你值得拥有! 如果你不想错过换行的机会,那么就参加柠檬班... -
MySQL数据库全阶段课程(赠送工具+脚本
MySQL数据库全阶段课程(赠送工具+脚本本课程为MySQL全阶段课程,从零基础入门到高级进阶,适合任何阶段的学习人群... -
2020年MySQL5.7系列课程
2020年MySQL5.7系列课程本小专题带领大家快速掌握MySQL企业级读写分离方案 2020年MySQL5.7系列课程--新一...
说明
1、使用触发器实现的业务逻辑在出现问题时很难定位。
尤其是涉及多个触发器时,会使后期维护困难。
2、大量使用触发器容易导致代码结构混乱。
增加程序的复杂性。
3、如果需要更改的数据量大,触发器的执行效率会很低。
4、触发器的隐式调用容易被忽视。
很难排查问题。
实例
#创建表创建触发器 mysql>CREATETABLEaccount(acct_numINT,amountDECIMAL(10,2)); QueryOK,0rowsaffected(0.03sec) mysql>INSERTINTOaccountVALUES(137,14.98),(141,1937.50),(97,-100.00); mysql>delimiter// mysql>CREATETRIGGERupd_checkBEFOREUPDATEONaccount FOREACHROW BEGIN IFNEW.amount<0THEN SETNEW.amount=0; ELSEIFNEW.amount>100THEN SETNEW.amount=100; ENDIF; END;// mysql>delimiter; #验证触发器作用 mysql>select*fromaccount; +----------+---------+ |acct_num|amount| +----------+---------+ |137|14.98| |141|1937.50| |97|-100.00| +----------+---------+ 3rowsinset(0.00sec) mysql>updateaccountsetamount=114.98whereacct_num=137; QueryOK,1rowaffected(0.01sec) Rowsmatched:1Changed:1Warnings:0 mysql>select*fromaccount; +----------+---------+ |acct_num|amount| +----------+---------+ |137|100.00| |141|1937.50| |97|-100.00| +----------+---------+ 3rowsinset(0.00sec) #查看触发器 mysql>showtriggers; #删除触发器 mysql>droptriggerifexistsupd_check; #查看数据库实例中所有触发器 SELECT a.TRIGGER_SCHEMA, a.TRIGGER_NAME, a.ACTION_TIMING, a.EVENT_OBJECT_TABLE, a.EVENT_MANIPULATION FROM information_schema.`TRIGGERS`a WHERE a.TRIGGER_SCHEMANOTIN('information_schema','performance_schema','mysql','sys'); delimiter//设置MySQL执行结束标志,默认为;
以上就是mysql触发器的缺陷分析,希望对大家有所帮助。更多mysql学习指路:MySQL
推荐操作系统:windows7系统、mysql5.8、DELL G3电脑
课程教程:mysql触发器的缺陷分析上一篇:短效代理ip有哪些好处
下一篇:没有了