1. 程式人生 > >mysql觸發器簡單demo,深入理解

mysql觸發器簡單demo,深入理解

之前的文章已經有詳細講解過觸發器的語法,這篇文章主要是以實踐為主,本人瀏覽了好多關於觸發器的部落格,好文章確實不少,在這裡挑這篇轉載,是因為覺得對於任何入門的知識,起步把握要領即可,後續再慢慢深入,不能剛開始一篇長篇大論,各種深入問題都涉及,那樣會給自己在學習之前造成視野恐懼和心理恐懼. 希望這篇文章能讓你快速清晰的理解觸發器這個概念.

~~語法~~

CREATE TRIGGER <觸發器名稱>  --觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和MySQL中其他物件的命名方式基本相象.
BEFORE AFTER }  --觸發器有執行的時間設定:可以設定為事件發生前或後。
INSERT 

UPDATE DELETE }  --同樣也能設定觸發的事件:它們可以在執行insert、update或delete的過程中觸發。
ON <表名稱>  --觸發器是屬於某一個表的:當在這個表上執行插入、 更新或刪除操作的時候就導致觸發器的啟用. 我們不能給同一張表的同一個事件安排兩個觸發器。
FOR EACH ROW  --觸發器的執行間隔:FOR EACH ROW子句通知觸發器 每隔一行執行一次動作,而不是對整個表執行一次。
<觸發器SQL語句>  --觸發器包含所要觸發的SQL語句:這裡的語句可以是任何合法的語句, 包括複合語句,但是這裡的語句受的限制和函式的一樣。

--你必須擁有相當大的許可權才能建立觸發器(CREATE TRIGGER),如果你已經是Root使用者,那麼就足夠了。這跟SQL的標準有所不同。

~~例項~~

example1:

建立表tab1

DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
    tab1_id varchar(11)
);

建立表tab2
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
    tab2_id varchar(11)
);

建立觸發器:t_afterinsert_on_tab1

作用:增加tab1表記錄後自動將記錄增加到tab2表中

DELIMITER $

DROP TRIGGER IF EXISTS t_afterinsert_on_tab1 $

CREATE 
	TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1
FOR EACH ROW BEGIN
	INSERT INTO tab2(tab2_id) VALUES(new.tab1_id);
	
END
$
測試一下
INSERT INTO tab1(tab1_id) values('0001');
看看結果
SELECT * FROM tab1;
SELECT * FROM tab2;

example2:

建立觸發器:t_afterdelete_on_tab1

作用:刪除tab1表記錄後自動將tab2表中對應的記錄刪去

DELIMITER $
DROP TRIGGER IF EXISTS t_afterdelete_on_tab1 $
CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
	DELETE FROM tab2 WHERE tab2_id=old.tab1_id;
END 
$
測試一下
DELETE FROM tab1 WHERE tab1_id='0001';
看看結果
SELECT * FROM tab1;
SELECT * FROM tab2;





相關推薦

mysql觸發器簡單demo深入理解

之前的文章已經有詳細講解過觸發器的語法,這篇文章主要是以實踐為主,本人瀏覽了好多關於觸發器的部落格,好文章確實不少,在這裡挑這篇轉載,是因為覺得對於任何入門的知識,起步把握要領即可,後續再慢慢深入,不能剛開始一篇長篇大論,各種深入問題都涉及,那樣會給自己在學習之前造成視野恐

JavaScript 函數聲明函數表達式匿名函數的區別深入理解立即執行函數(function(){…})()

之前 事件處理程序 logs cnblogs 函數調用 引擎 花括號 ava img function fnName(){xxxx}; // 函數聲明:使用function關鍵字聲明一個函數,在指定一個函數名。 //例如:(正常,因為 提升 了函數聲明,函

2.2 logistic回歸損失函數(非常重要深入理解

問題 好的 為知 得出 cnblogs 回歸算法 很多 將他 深入 上一節當中,為了能夠訓練logistic回歸模型的參數w和b,需要定義一個成本函數 使用logistic回歸訓練的成本函數 為了讓模型通過學習來調整參數,要給出一個含有m和訓練樣本的訓練集很自然的,希望通過

CSS外邊距屬性深入理解margin

需要 AD result 左右 定位 IT 條件 表格 group margin <iframe height=‘265‘ scrolling=‘no‘ title=‘margin‘ src=‘//codepen.io/wmui/embed/zWEzEg/?heigh

MYSQL---觸發器簡單了解

each apple _id 庫存 delet 簡單 執行 num AC 觸發器 trigger 1、觸發器是指事先為某張表綁定一段代碼,當表中某些內容發生改變(增insert、刪delete、改update)時,系統自動觸發綁定的那段代碼並執行。比如 一旦訂單表裏插入新訂

對象的深度拓展$.extend(true,{},a,b)深入理解小心陷阱

com ges 深入理解 沒有 裏的 事物 cnblogs wid 希望 轉載:https://www.cnblogs.com/DJeanWeb/p/4388689.html $.extend一般情景下,使用深度拓展兩個對象時,我們想要的效果是,b對象覆蓋掉a對象中存在的

JavaScript 的基本用法(六):簡單練習有助於理解js

1 按下Ctrl鍵,使在下表中“操作”列中選擇同時使被勾選的那些行,獲得同樣的選擇?   <!DOCTYPE html> <html lang="zh-CN"> <head> <meta chars

循序漸進深入理解KMP演算法

KMP演算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同時發現的。其中第一位就是《計算機程式設計藝術》的作者! KMP演算法要解決的問題就是在字串(也叫主串)中的模式(pattern)定位問題。說簡單點就是我們平時常說的關鍵字搜尋。模式串就是關鍵字(接下來

10個簡單步驟完全理解SQL

轉載自:http://blog.jobbole.com/55086/ 1 sql是一種宣告式語言  sql語言是為計算機聲明瞭一個你想從原始資料中獲得什麼樣的結果的一個範例,而不是告訴計算機如何能夠得到結果。  2sql的語法並不是按照語法順序執行  select

簡述JAVA GC回收機制深入理解GC原理

什麼是“GC” 垃圾回收機制。 為什麼要用“GC” 眾所周知,JAVA 這語言,與C語言不同,Java記憶體(堆記憶體)的分配與回收由JVM垃圾收集器自動完成,比如 C語言自己定義的變數,不用時需要 自己回收這個變數 。JAVA 這就是自動完成了,自動檢測,無用的

C++的函式中如何使用指標交換兩個數的值深入理解指標

使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使用的是指標,第五種使用的是引用。請看下面五個簡單的函式: #include&

Django第八篇深入理解檢視和url

目錄  URL 配置小技巧  簡化匯入函式的方式  在除錯模式下提供特殊的 URL  具名分組 示例請求:  捕獲的引數始終是字串 為檢視的引數指定預設值 錯誤處理  引入其他 URL 配置 捕獲的引

Flask-login 簡單 Demo簡單的實現登入方法

Flask-login 簡單 Demo, 最簡單的實現登入方法 * 當使用MethodView的時候,login_required 使用方法 class XxxxView(MethodView): decorators = [login_required] #

MySQL資料行溢位的深入理解

一、從常見的報錯說起 故事的開頭我們先來看一個常見的sql報錯資訊: 相信對於這類報錯大家一定遇到過很多次了,特別對於OMG這種已內容生產為主要工作核心的BG,在內容線的儲存中,資料大一定是個繞不開的話題。這裡的資料“大”,遠不止儲存空間佔用多,其中也包括了單個(表)欄位儲存多、大,資料留存時間長,資

JavaWeb簡單demo學生管理系統

最近在學JavaWeb,這個小demo是做練習用的,沒有用到框架,只是實現前後臺通訊的小案例,可以通過這個小案例理解JavaWeb是如何工作的,怎樣通過前臺頁面調取後臺資料庫裡的資料,怎樣設定過濾器解決亂碼問題以及使用者登入問題等等。 JavaWeb的綜合性比

C/C++程式設計學習筆記二:C語言的函式中如何使用指標交換兩個數的值深入理解指標

 使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使

登入MYSQL簡單步驟新手上路

1.首先先進入到本地的phpstudy目錄 進入到mysql/bin中   登入MYSQL:   @>mysql -u root -p  @>密碼 成功登入 列出所有資料庫 mysql>show database; 切換資料庫 mysql>use

ELF(七)可重定位目標部分摘自深入理解作業系統深入理解linx核心

可重定位目標          重定位是將EFL檔案中的未定義符號關聯到有效值的處理過程。在main.o中,這意味著對printf和puts的未定義的引用必須替換為該程序的虛擬地址空間中適當的機器程式碼所在的地址。在目標中用到的相關符號之處,都必須替換。         

關於mysql 觸發器(insertupdate)

1. 當表A新增一條記錄,表B則跟著新增這條記錄 #刪除當前觸發器 drop TRIGGER IF EXISTS t_edw_event_add_cdr_3; #建立觸發器:當ccbill_cdr表新增一條記錄,則在edw_event_add_cdr表新增這條記錄 CREA

站在大神肩膀上深入理解 Android事件分發機制

Android事件分發,參考了網上的很多資料。基本基於android2.2的原始碼來分析,因為即使是新的版本,裡面的原理思想也沒有改變。 有了大神的肩膀,我在理解了其原理的基礎上,進行一個小總結。 先理解一個概念: 事件:在android中,點選螢幕是時,產生的長按,點選