您现在的位置是:课程教程文章

mysql触发器的缺陷分析

2023-12-13 23:58课程教程文章 人已围观

说明

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有哪些好处

下一篇:没有了

站点信息

  • 文章统计篇文章