mysql之預存程序和觸發器的應用

來源:互聯網
上載者:User

標籤:應用程式   伺服器   sql語句   update   insert   

儲存常式:

       儲存常式是儲存在資料庫伺服器中的一組sql語句,通過在查詢中調用一個指定的名稱來執行這些sql語句命令。

使用情境:

       我們的應用程式分為兩種:一種基於web,一種是基於案頭,他們都和資料庫進行互動來完成資料的存取工作。假設有一種應用程式套件組合含了這兩種,現在要修改其中的一個查詢sql語句,那麼我們可能要同時修改他們中對應的sql語句,當我們的應用程式很龐大很負載的時候問題就出現了,不易維護!另外sql查詢放到我們的web程式或案頭中易於遭到sql注入的破壞。而預存程序正好可以幫我們解決這個問題。

     mysql中的儲存常式包含了預存程序和儲存函數,他們統稱為儲存常式

     預存程序主要完成在擷取記錄或插入記錄或更新記錄或刪除記錄,即完成select,insert,delete,update等

     儲存函數只完成查詢的工作,可接受輸入參數並返回一個結果

     查詢資料庫的所有預存程序:SHOWPROCEDURE  STATUS

     預存程序文法:

         DEMILITER $$ --重定義分割符

              CREATE PROCEDURE sp_name()

              begin  --區塊定義開始

                ......

              end --地區定義結束

              $$  --定義的分割符

         刪除預存程序:DROP PROCEDURE procedure_name

         變數定義:局部變數聲明一定放在預存程序體的開始

             DECLARE variable_name  [,variable_name...]  DATATYPE  [default value]

             datatype 為MySQL的資料類型,如int,float,date,varchar(length)

             例子:DECLARE  l_int  int  unsighed  default  40000;

          變數賦值:

               SET  變數名  = 運算式   [,variable_name = expression ...]


觸發器:

       不用想預存程序需要再程式中進行調用,是在INSERT/PUDATE/DELETE等DML語句修改資料表時觸發。

       應用情境:重要的商務邏輯、提高效能、監控表的修改等

       文法:

        DELIMITER $$

         CREATE TRIGGER tri_stuname   --觸發器名稱

         trigger_time  --觸發時機 取值為before/after

         trigger_event -- 觸發時間,取值為INSERT/UPDATE/DELETE;  ON tbl_name --建立觸發器的表名

         FOR EACH ROW

         trigger_stmt --觸發器程式體, begin  ....end

       執行個體:

           DELIMITER $
               create trigger tri_stuInsert after insert
               on student for each row
               begin
               declare c int;
               set c = (select stuCount from class where classID=new.classID);
               update class set stuCount = c + 1 where classID = new.classID;
               end$
          DELIMITER ;

        


mysql之預存程序和觸發器的應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.