直接使用try...catch....結構。比如:
成都創新互聯的客戶來自各行各業,為了共同目標,我們在工作上密切配合,從創業型小企業到企事業單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業領域包括成都網站設計、成都網站制作、電商網站開發、微信營銷、系統平臺開發。
try
{
DB::query("SELECT?count(*)?FROM?pre_111?WHERE?fid?=?$fid";
}
catch(exception?$ex)
{
echo($ex-getMessage());
}
從Mysql 5.5 開始為我們提供了SIGNAL函數來實現這個功能。
[sql] view plain copy
CREATE TRIGGER `tg_order_create` AFTER INSERT ON `tp_order` FOR EACH ROW BEGIN
DECLARE msg varchar(200);
/*凍結金額*/
IF 2=NEW.condition THEN
UPDATE `tp_user` SET `frozen_amount`=`frozen_amount`+NEW.amount WHERE `id`=NEW.uid AND `amount`-`frozen_amount` NEW.amount;
/*如果余額不足,產生一個錯誤*/
IF ROW_COUNT() 1 THEN
set msg = "用戶余額不足以完成支付.";
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
/*扣除金額*/
ELSEIF 3=NEW.condition THEN
UPDATE `tp_user` SET `amount`=`amount`-NEW.amount WHERE `id`=NEW.uid AND `amount`-`frozen_amount` NEW.amount;
/*如果余額不足,產生一個錯誤*/
IF ROW_COUNT() 1 THEN
set msg = "用戶余額不足以完成支付.";
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END IF;
END;
這里這條觸發器的功能是庫存操作,當庫存足夠的時候 減少庫存,否則 拋出一個異常并報告商品庫存不足:
[sql] view plain copy
CREATE TRIGGER `TG_order_detail_dec_stock` BEFORE INSERT ON `tp_order_detail` FOR EACH ROW BEGIN
DECLARE msg VARCHAR(200);
UPDATE `tp_stock` SET `num`=`num`-NEW.num WHERE `goods_id`=NEW.goods_id AND `mid`=NEW.mid AND `num`=NEW.num;
IF ROW_COUNT() 1 THEN
SELECT CONCAT(`name`, ' 庫存不足.') INTO msg FROM `tp_goods` WHERE `id`=NEW.goods_id;
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END;
在PHP端的處理(注:使用ThinkPHP框架):
[php] view plain copy
//前面省略若干行....
try {
if (false === ($order_pk = $tbl_order-add($order))) {
$tbl-rollback();
echo json_encode(array('success' = -1, 'message' = "創建訂單失敗!."), JSON_UNESCAPED_UNICODE);
return;
}
}catch (\PDOException $e){
$errInfo=$e-errorInfo[2];
$tbl-rollback();
echo json_encode(array('success' = -1, 'message' = "創建訂單失敗!,{$errInfo}"), JSON_UNESCAPED_UNICODE);
return;
}
//后面省略若干行....
user表不存在;而且一般情況下user屬于關鍵字,不應該把user當表名直接用
分享名稱:mysql怎么拋出異常,mysql存儲過程主動拋出異常
鏈接URL:http://m.newbst.com/article4/dsseeie.html
成都網站建設公司_創新互聯,為您提供電子商務、ChatGPT、自適應網站、移動網站建設、網站設計、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯