溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中怎么調(diào)用存儲函數(shù)和存儲過程,它的觸發(fā)器是什么

發(fā)布時間:2021-06-28 17:34:08 來源:億速云 閱讀:147 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“php中怎么調(diào)用存儲函數(shù)和存儲過程,它的觸發(fā)器是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在php中使用存儲函數(shù)或存儲過程的示意

//調(diào)用存儲函數(shù):

$v1= $_POST["a];sv2 = $_POST["b];
$sq1 = "insert into tab1 (id, f2, f3)values ( null,nowO. fumnc1(Sv1 , $v2) )":$result= mysql_query($sql);

//調(diào)用存儲過程:

$v1 = $_POST[ "usemame"];$v2=$_POST["pass"];sv3= $_POST["age"];
$sql ="callinsert_user(Sv1,$v2,$v3 ); ";llinsert_user)是一個存儲過程,帶3個參數(shù),會將該3個參數(shù)數(shù)據(jù)寫入<insert〉某個表中。
Sresult = mysql_queryO;

另一個使用存儲過程返回結果集的例子

$sql m"call Get_User_iInfo( sid )“;//Get_User_info)是一個存儲過程,其中會返回某個指定id 的用戶信息$result = mysql_query(ssql);

這里得到的就是“結果集”了

觸發(fā)器(trigger)

含義:

觸發(fā)器,也是一段預先定義好的編程代碼〈跟存儲過程和存儲函數(shù)一樣〉,并有個名字。但:它不能調(diào)用,而是,在某個表發(fā)生某個事件(增,刪,改〉的時候,會自動“觸發(fā)”而調(diào)用起來。

定義形式:

create trigger觸發(fā)器名︰觸發(fā)時機觸發(fā)事件on表名foreach rowasbegin
//這里,才是編程的位置,也就是觸發(fā)器的內(nèi)部語句end3

說明:

1,觸發(fā)時機,只有2個: before《在....之前), after《在....之后〉﹔2,觸發(fā)事件,只有3個: insert, update , delete

2,觸發(fā)事件,只有3個: insert,update , delete

3,即觸發(fā)器的含義是:在某個表上進行insert(或 update,或 delete)之前〈或之后〉,會去執(zhí)行其中寫好的代碼(語句);即每個表只有6個情形會可能調(diào)用該觸發(fā)器,

4,通常,觸發(fā)器用于在對某個表進行增刪改的操作的時候,需要同時去做另外一件事情的時候;5,在觸發(fā)器的內(nèi)部,有2個關鍵字代表某種特定的含義,可以用了獲取數(shù)據(jù)∶

new:

它代表當前正要執(zhí)行的 insert  update 的時候的“新行”數(shù)據(jù)﹔通過它,可以獲取這一新行數(shù)據(jù)的任意一個字段的值,形式為:

set@v1 = new.id;

//獲得該新插入或update行的id字段的值(前提是有該id)

set@v2 = new.age;//同上,

old:

它代表當前正要執(zhí)行的delete的時候的“舊行”數(shù)據(jù),通過它,可以獲取這一舊行數(shù)據(jù)的任意一個字段的值,形式為:

set @v1 = old.id:I

獲得該新插入或update行的id字段的值(前提是有該id)

set @v2 = old.age;//同上;

#先刪除tab_int_max中的所有數(shù)據(jù):

delete from tab_int_max1;

#取得tab_int中的f1字段的最大值,并存入變量@maxfselect max(f1) into @maxf1 from tab_int;

#然后,根據(jù)該得到的f1字段的最大值,作為條件,取出3個字段的值:

select f2 into @v2 from tab_int where f1 = @maxf1;
select f3 into @v3 from tab_int _ where f1 = @maxf1;#然后,將@maxf1,@v2,@v3插入到表tab_int_max1
insert into tab_int_max1 (f1,f2,f3)values( @maxf1,@v2,@v3);end;
#再建一個觸發(fā)器,在表tab_int進行insert之前,將該行數(shù)據(jù)#也同時插入到一個跟其類似結果的表(tab_int_some)中
:CREATE TABLE tab_int_some (
id int(11) DEFAULT NULL,age tinyint(4) DEFAULT NULL);
create trigger copy_data before insert on tab_int for each rowbegin
set @v1 = new.f1;
#獲得新行的字段f1的值;
set @v2 = new.f2;#獲得新行的字段f2的值;
insert into tab_int_some(id,age)values(@v1,@v2);end;

“php中怎么調(diào)用存儲函數(shù)和存儲過程,它的觸發(fā)器是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

php
AI