關于mysql觸發器_第1頁
關于mysql觸發器_第2頁
關于mysql觸發器_第3頁
關于mysql觸發器_第4頁
關于mysql觸發器_第5頁
已閱讀5頁,還剩1頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、關于mysql觸發器、存儲過程的用法有什么很多程序員在出去面試的時候都會存在這樣一個問題,就是筆試題中對于sql語句的考察,很多關鍵字的寫法忘記了甚至是完全沒有用過,但是如果你能百度一下或者看一下之前寫的代碼又會瞬間想起來,這其實是一個比較尷尬的問題,僅僅的因為一個關鍵字就能否定你的sql能力或者代碼能力嗎?當然這是很片面的。但是sql的關鍵字又實在是太多,一個一個整理未免太多復雜,所以我這里不過多的介紹了,碰到了,自己查下資料即可。今天主要介紹的是觸發器、存儲過程的用法。觸發器的語法:Delimiter $Create trigger 觸發器名稱After/before insert/upd

2、ate/delete on 表名For each row #每隔一行執行一次動作,而不是對整個表(mysql中一般是固定寫法Beginsql語句End$Delimiter ;解釋一下,上面的語法意思:在執行表的增刪改之后或之前,完成事件的觸發下面,我們看下具體的例子,場景如下: 當我們向訂單中插入數據時,商品表中的對應商品要減少對應的數量,這里我們使用觸發器來實現;觸發器代碼: new.order_count 和new.g_id都是訂單表中新傳入的數據,根據新插的值進行動態更新執行如下代碼: 意為在我向訂單表中插入數據之后,觸發更新商品表的sql語句插入前: 插入后: 到這里,觸發器的實現就已

3、經完全寫完了。但是,這里還可能存在一種情況,用戶如果不想買了,我們應該如何處理,你需要把訂單表的記錄刪除,然后把對應的商品數量加回去。觸發器: 需要注意的是我們這里不能再使用new.order_count 和new.g_id,而應該換成對應的old,因為我們要刪除的信息不是新插入的,而是用的之前的,這一點應該是不難理解的。執行如下代碼: 刪除后: 可以看到,此時的面包數量已經加回來了;上述代碼寫得都是先執行增刪改,再進行觸發,下面我們演示先觸發,再進行對應的增刪改結合具體實例:用戶在購買的時候,我們實際開發中需要先對商品數量進行判斷,如果,商品庫存不足或者小于訂單購買量,此時應提示庫存不足。同樣,需要用到before關鍵字,意為先觸發事件,再進行增刪改觸發器代碼如圖: 執行下面代碼: 插入前: 插入后: 可以看到,我們明明購買了10個,但是庫存只有8個,所以經過判斷我們最多只能購買8個,當然,這里呢,也會存在一個問題,這個sql里面的8寫的并不規范,正常來講,應該先查詢數量,再判斷,這里只是解釋after和before 的區別。存儲過程語法:Create procedure 存儲過程名稱(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論