MySQL - 觸發器

一、概述

Mysql 允許通過觸發器、存儲過程、函數的形式來存儲代碼。

觸發器可以讓你在執行 Insert、Update、Delete的時候,執行一些特定的操作。可以在Mysql中指定是在Sql語句執行之前觸發還是執行后觸發。

 
二、使用觸發器需要注意的點

對每一個表的每一個事件,最多只能定義一個觸發器(換句話說,不能在AFTER INSERT上定義兩個觸發器)。

Mysql只支持“基于行的觸發”,也就是說,觸發器始終是針對一條記錄的,而不是針對整個SQL語句的。所以,如果變更的數據集非常大,效率將會很低。

 
?三、使用


1、基本說明

create trigger 【觸發器名稱】【觸發器的執行時間點】【執行的動作點】 on 【表名】for each row [函數 或者動作]

說明:

觸發器執行時間:before、after

執行的動作點:insert, update, delete

函數:包在 begin、end 之間

動作:update、insert
 
2、使用
?

create triggerupdate_product_after
after update onproduct
for each row
beginupdate product set last_update_time = TIMESTAMP-- 代碼區域
end;



四、說明

  由于目前大多數的 PHP 框架已經內置了事件觸發的函數,所以我們項目中已經很少再用到 Mysql 本身的觸發器了。并且我們也完全可以在應用程序代碼中去控制,沒必要在Mysql中去寫事件代碼了。
  
  觸發器可以掩蓋服務器背后的工作,一個簡單的Sql語句背后,因為觸發器,可能包含了很多看不見的工作。因此觸發器的問題也很難排查,如果某個性能問題和觸發器相關,將會很難定位和分析。

  觸發器可能導致死鎖和鎖等待。如果觸發器失敗,那么原來的sql語句也會失敗。如果沒有意識到這其中是觸發器在搞鬼,那么將很難理解服務器拋出的出錯誤代碼是什么意思。

 

原文鏈接:https://www.haveyb.com/article/60

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282119.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282119.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282119.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker Desktop 可以直接啟用Kubernetes 1.25 了

作為目前事實上的容器編排系統標準,K8s 無疑是現代云原生應用的基石,很多同學入門可能直接就被卡到第一關,從哪去弄個 K8s 的環境, Docker Desktop 自帶了Kubernetes 服務,但是在過往的經驗中就是用梯子也安裝不了&…

截取url的host_java正則表達式獲取url的host示例

java正則表達式獲取url的host示例 復制代碼 代碼如下: public static String getHost(String url){if(url==null||url.trim().equals("")){return ""; } String host = ""; Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+&qu…

MySQL - 視圖

一、概述 Mysql 5.0 版本后開始引入視圖。視圖本身是一個虛擬表&#xff0c;不存放任何數據。在使用 sql 語句訪問視圖的時候&#xff0c;他返回的數據都是在查詢過程中從其他表動態生成的。 二、使用視圖   1、創建視圖 CREATE VIEW comic_view as SELECT comic_id,name,pe…

Linux環境下壓縮與解壓命令大全

tar命令 解包&#xff1a;tar zxvf FileName.tar 打包&#xff1a;tar czvf FileName.tar DirName gz命令 解壓1&#xff1a;gunzip FileName.gz 解壓2&#xff1a;gzip -d FileName.gz 壓縮&#xff1a;gzip FileName .tar.gz 和 .tgz 解壓&#xff1a;tar zxvf FileName.tar.…

Centos 磁盤管理及配額管理

實驗內容&#xff1a;一.添加兩塊硬盤&#xff0c;使用LVM做成VG01組&#xff0c;在該VG中新建兩個LV。二.將這兩個LV格式化為ext4/xfs&#xff0c;開機自動掛載到系統mnt1,mnt2目錄下。三.lv02開啟磁盤配額功能&#xff0c;用來進行用戶與組分配額的實驗。四.在系統里添加用戶…

OnionArch - 采用DDD+CQRS+.Net 7.0實現的洋蔥架構

博主最近失業在家&#xff0c;找工作之余&#xff0c;看了一些關于洋蔥&#xff08;整潔&#xff09;架構的資料和項目&#xff0c;有感而發&#xff0c;自己動手寫了個洋蔥架構解決方案&#xff0c;起名叫OnionArch。基于最新的.Net 7.0 RC1, 數據庫采用PostgreSQL, 目前實現了…

spark寫出分布式的訓練算法_利用 Spark 和 scikit-learn 將你的模型訓練加快 100 倍...

在 Ibotta&#xff0c;我們訓練了許多機器學習模型。這些模型為我們的推薦系統、搜索引擎、定價優化引擎、數據質量等提供動力。它們在與我們的移動應用程序交互時為數百萬用戶做出預測。當我們使用 Spark 進行數據處理時&#xff0c;我們首選的機器學習框架是 scikit-learn。隨…

理解LinkedHashMap

1. LinkedHashMap概述&#xff1a;LinkedHashMap是HashMap的一個子類&#xff0c;它保留插入的順序&#xff0c;如果需要輸出的順序和輸入時的相同&#xff0c;那么就選用LinkedHashMap。LinkedHashMap是Map接口的哈希表和鏈接列表實現&#xff0c;具有可預知的迭代順序。此實現…

MySQL - 鎖

一、什么是鎖 鎖是數據庫系統區別于文件系統的一個關鍵特性。鎖機制用于管理對共享資源的并發訪問。 二、MySQL 不同存儲引擎支持的鎖機制 存儲引擎支持的鎖類型Myisam表鎖Innodb行鎖、表鎖Memory表鎖BDB頁鎖、表鎖表鎖&#xff1a;直接鎖住的是一個表&#xff0c;開銷小&…

數據庫時區那些事兒 - MySQL的時區處理

原文地址 當JVM時區和數據庫時區不一致的時候&#xff0c;會發生什么&#xff1f;這個問題也許你從來沒有注意過&#xff0c;但是當把Java程序容器化的時候&#xff0c;問題就浮現出來了&#xff0c;因為目前幾乎所有的Docker Image的時區都是UTC。本文探究了MySQL及其JDBC驅動…

java_函數的重載

函數的重載&#xff08;Overload&#xff09;概念&#xff1a;在同一個類中&#xff0c;允許存在一個以上的同名函數&#xff0c;只要他們的參數個數或者參數類型不同即可。函數功能一樣&#xff0c;僅僅是參與運算的未知內同不同時&#xff0c;可以定義多函數&#xff0c;卻使…

全新升級的AOP框架Dora.Interception[2]: 基于約定的攔截器定義方式

Dora.Interception&#xff08;github地址&#xff0c;覺得不錯不妨給一顆星&#xff09;有別于其他AOP框架的最大的一個特點就是采用針對“約定”的攔截器定義方式。如果我們為攔截器定義了一個接口或者基類&#xff0c;那么攔截方法將失去任意注冊依賴服務的靈活性。除此之外…

redis watch使用場景_redis不得不會的事務玩法

我們都知道redis追求的是簡單&#xff0c;快速&#xff0c;高效&#xff0c;在這種情況下也就拒絕了支持window平臺&#xff0c;學sqlserver的時候&#xff0c;我們知道事務還算是個比較復雜的東西&#xff0c;所以這吊毛要是照搬到redis中去&#xff0c;理所當然redis就不是那…

加快Android Studio的編譯速度

從Eclipse切換到Android Studio后&#xff0c;感覺Android Studio的build速度比Eclipse慢很多&#xff0c;以下幾個方法可以提高Android Studio的編譯速度使用Gradle 2.4Gradle 2.4對執行性能有很大的優化&#xff0c;但Android Studio現在默認使用的是Gradle 2.2,所以我們需要…

開發中 MySQL 規范

一、建表規范 1、數據庫名、表名、字段名必須使用小寫字母或數字&#xff0c;并且禁止以數字開頭 示例&#xff1a;goods_category、agent_operate_201812_log 2、數據庫名、表名、字段名要做到見名識意 示例&#xff1a;goods_category&#xff0c;不能 gc 3、配置表建議以 …

PaddleOCR在 Linux下的webAPI部署方案

很多小伙伴在使用OCR時都希望能采用API的方式調用&#xff0c;這樣就可以跨端跨平臺了。本文將介紹一種基于python的PaddleOCR識別WebAPI部署方案。喜歡的可以關注公眾號&#xff0c;獲取更多內容。一、 Linux環境下部署1.環境要求操作系統&#xff1a;CenterOS7&#xff1b;主…

影響程序員生涯的三個錯誤觀念,你千萬不要犯!

程序員在社會上&#xff0c;到底是怎樣一個生活群體&#xff1f;是否能找到自己方向&#xff1f;其實&#xff0c;路一直都在那里&#xff0c;只是你看不到而已&#xff01; 當初的你&#xff0c;可能一直被一些技術牽著鼻子走&#xff0c;并不是自己在做著自己想做的&#xff…

心電圖計算心率公式_心電圖到底能反應啥問題,看過之后你也能當“醫生”

只要是經歷過健康體檢的健康人&#xff0c;或者做過手術的患者&#xff0c;基本都做過心電圖檢查。都說久病成醫&#xff0c;所以有些人對血、尿常規等各項檢查的結果都門清兒得很&#xff0c;最起碼看一眼也能說出個大概齊。偏偏心電圖這種常做的檢查&#xff0c;不但老病號如…

獲取正在運行的服務

手機上安裝的App&#xff0c;在后臺運行著很多不同功能的服務&#xff0c;最常見的例如消息推送相關的服務。如何查看這些服務&#xff1f;如何判斷某個服務是否正在運行&#xff1f;如何停止某一個服務呢&#xff1f;請看下面的方法&#xff1a; package com.example.servicel…

openstack的vnc啟動ssl

1、制作ssl證書# cd /etc/pki/tls/certs [rootwww certs]# make vnc.key Enter pass phrase:# 輸入密碼 Verifying - Enter pass phrase:#確認# 從private key 中刪除密碼# openssl rsa -in vnc.key -out vnc.key # make vnc.csr Country Name (2 letter code) [XX]:CN# 國家 S…