电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL觸發(fā)器的使用

瀏覽:21日期:2023-10-02 16:05:42

觸發(fā)器可以在執(zhí)行語句前或執(zhí)行后觸發(fā)其他 SQL 代碼運行。觸發(fā)器可以讀取觸發(fā)語句改變了哪些數(shù)據(jù),但是沒有返回值。因此可以使用觸發(fā)器加強業(yè)務邏輯的約束而不需要在應用程序?qū)憣拇a。

從上述描述可以看到,觸發(fā)器可以簡化應用程序的邏輯并且可以提升性能,這是因為使用觸發(fā)器減少了應用程序和服務端的交互次數(shù)。同時,觸發(fā)器有助于完成自動更新歸一化和統(tǒng)計數(shù)據(jù)。例如,我們可以使用觸發(fā)器自動統(tǒng)計交易訂單總金額,訂單數(shù)及平均客單價。 然而,MySQL 的觸發(fā)器的應用場合也十分有限,如果你使用過其他數(shù)據(jù)庫產(chǎn)品的觸發(fā)器,不要以為 MySQL 也能實現(xiàn)相同的功能,例如:

每個數(shù)據(jù)表的單一事件只能有一個觸發(fā)器,也就是說對于 AFTER INSERT 這樣的事件來說,不能同時有超過1個的觸發(fā)器。 MySQL 只支持行級別的觸發(fā)器,也就是只能按 FOR EACH ROW 這種方式使用觸發(fā)而不是整個 SQL 語句,這對于大量數(shù)據(jù)的操作而言會比較低效。MySQL 的觸發(fā)器只能按下面的形式編寫:

CREATE TRIGGER 觸發(fā)器名 BEFORE|AFTER 觸發(fā)事件ON 表名 FOR EACH ROWBEGIN 執(zhí)行語句列表;END

執(zhí)行語句列表支持單條或多條語句,下面是一個多條語句的示例:

DELIMITER $$CREATE TRIGGER user_create_log AFTER INSERT ON t_users FOR EACH ROWBEGINDECLARE log_info VARCHAR(40)character set utf8;DECLARE description VARCHAR(20) character set utf8;#后面發(fā)現(xiàn)中文字符編碼出現(xiàn)亂碼,這里設(shè)置字符集SET description = ' is created';SET log_info = CONCAT(NEW.user_name, description); #函數(shù)CONCAT可以將字符串連接INSERT INTO logs(log) values(log_info);END $$DELIMITER ; 觸發(fā)器可能導致服務端實際執(zhí)行的工作不可預測,一個簡單的語句可能導致服務端做大量不可見的工作。例如,如果一個觸發(fā)器更新了 一個相關(guān)的表,可能導致受影響的行數(shù)加倍。 觸發(fā)器難以調(diào)試,并且一旦引入了觸發(fā)器,很難分析性能瓶頸。 觸發(fā)器會導致潛在的鎖等待和死鎖。如果觸發(fā)器失敗了,源查詢也會失敗。如果沒有意識到觸發(fā)器的存在,這類玩呢提很難發(fā)現(xiàn)。

大多數(shù)限制中,最大的限制是 FOR EACH ROW 的設(shè)計,這有時候?qū)е掠|發(fā)器沒法用于維護統(tǒng)計和緩存表,這是因為這可能很慢。使用觸發(fā)器的主要理由是相比定時同步更新,觸發(fā)器可以一致保持數(shù)據(jù)的一致性。 觸發(fā)器也沒法保證原子性。例如,更新 MyISAM 數(shù)據(jù)表的觸發(fā)器在源 SQL 語句出錯后,無法回滾。而且,觸發(fā)器自身也可能都只錯誤。如果我們使用了 AFTER UPDATE 基于 MyISAM 數(shù)據(jù)表去更新另一個表。如果觸發(fā)器有個導致第二張表操作失敗的錯誤,那對于第一張表的操作不會回滾。

InnoDB 的觸發(fā)器相關(guān)的操作,包括源語句都在同一個事務中,因此是滿足原子性的。然而,如果使用InnoDB 的觸發(fā)器去與另一張表校驗數(shù)據(jù)一致性的時候,這個時候如果不小心的話可能導致不正確的結(jié)果。例如,假設(shè)需要使用觸發(fā)器模擬外鍵,可以使用 BEFORE INSERT觸發(fā)器驗證另一張表是否存在對應的記錄,但是如果在觸發(fā)器讀取另一張表數(shù)據(jù)的時候不使用 SELECT FOR UPDATE的話,則由于并發(fā)性性問題可能導致錯誤的結(jié)果。 雖然觸發(fā)器有些缺陷,但是這并不意味著不能用。相反,觸發(fā)器本身也是有用的,尤其是對于約束,系統(tǒng)維護任務和保持統(tǒng)計數(shù)據(jù)保持最新。

也可以使用觸發(fā)器記錄數(shù)據(jù)行的變化。這樣即便是離線手動操作數(shù)據(jù)庫的記錄(如修復錯誤數(shù)據(jù))也能夠被記錄下來。但是,需要注意的是對于往其他自增主鍵表插入數(shù)據(jù)時要小心,這對于復制性的語句表現(xiàn)會有問題,因為自增值對于兩個相同的副本值并不同。

結(jié)語:

觸發(fā)器在有限的場合能夠發(fā)揮其優(yōu)勢,比如統(tǒng)計數(shù)據(jù)、數(shù)據(jù)表變更日志等。但是也會有一些缺陷,比如大數(shù)據(jù)量的更新由于逐行觸發(fā),會降低效率。還有就是,MyISAM 引擎無法保障原子性。因此,要根據(jù)應用場景是否要是有觸發(fā)器。

以上就是MySQL觸發(fā)器的使用的詳細內(nèi)容,更多關(guān)于MySQL觸發(fā)器的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

相關(guān)文章:
主站蜘蛛池模板: 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 北京燃气公司 用户服务中心 | 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 消防设施操作员考试报名时间,报名入口,报考条件 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 昆明化妆培训-纹绣美甲-美容美牙培训-昆明博澜培训学校 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 臻知网大型互动问答社区-你的问题将在这里得到解答!-无锡据风网络科技有限公司 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 |