mysql觸發(fā)器中包含select語句問題
mysql觸發(fā)器中包含select語句
在mysql的觸發(fā)器中,如果直接寫select * from d_shop_ware 會(huì)報(bào)錯(cuò)
Not allowed to return a result set from a trigger
查找原因是
MYSQL5以后,不允許觸發(fā)器返回任何結(jié)果,因此使用into @變量名,將結(jié)果賦值到變量中,用select調(diào)用即可
如下sql語句,
@flag_price_copy就可以進(jìn)行值的判斷
select b.flag_price into @flag_price_copy from `dst_111yao_doms`.`d_shop_ware` as a,`dst_111yao_doms`.`d_platform` as b? where a.pfid = b.pfid and a.olshopid = NEW.olshopid and a.tfid = NEW.pfid and a.warecode = NEW.outter_id and a.skuid = NEW.sku;
if @flag_price_copy = '1' then ?? ??? ?...
mysql觸發(fā)器中通過SELECT語句給局部變量賦值
一條賦值變量引發(fā)的巨坑,自己備注一下,浪費(fèi)了不少時(shí)間。
這邊關(guān)鍵字,我都用了大寫,方便觀看。
好久之前記錄的了,現(xiàn)優(yōu)化了格式,更方便閱讀
新增的實(shí)例
CREATE ?TRIGGER ?num_in ?AFTER ?INSERT ?ON user_t FOR ? EACH ? ROW ?BEGIN --變量的聲明 DECLARE num INT(11) ; --賦值 SET ?num = (SELECT ?COUNT(id) ?FROM user_t) ; ? ? ?UPDATE ?count_table SET count_num = num , update_time = SYSDATE()? ? ? ?WHERE table_name = "user_t" ; END ;
刪除的實(shí)例
CREATE ?TRIGGER ?account_delete_info ?AFTER ?DELETE ?ON sys_account_info FOR ? EACH ? ROW ?BEGIN DECLARE deleteid INT(11) ; -- 保險(xiǎn)起見 SET ?deleteid = 0 ; -- 直接獲取不到,得先存一下 ?這是個(gè)小坑 SET ?deleteid = OLD.id ; -- 保險(xiǎn)起見 ,確保在獲得值的時(shí)候刪除 IF deleteid != 0 THEN ? ?DELETE from sys_user_info ?where sys_user_info.account_id = deleteid ; END IF ; END ;
刪除觸發(fā)器
DROP TRIGGER account_delete_info ;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql的Table doesn't exist問題及解決
這篇文章主要介紹了Mysql的Table doesn't exist問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12SpringBoot中mysql的驅(qū)動(dòng)依賴問題小結(jié)
這篇文章主要介紹了SpringBoot中mysql的驅(qū)動(dòng)依賴問題,本文通過圖文示例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05PostgreSQL 正則表達(dá)式 常用函數(shù)的總結(jié)
這篇文章主要介紹了PostgreSQL 正則表達(dá)式 常用函數(shù)的總結(jié)的相關(guān)資料,對(duì)那些需要進(jìn)行復(fù)雜數(shù)據(jù)處理的程序來說,正則表達(dá)式無疑是一個(gè)非常有用的工具,這里就介紹下如何使用,需要的朋友可以參考下2017-08-08快速解決MySQL服務(wù)無法啟動(dòng)顯示:系統(tǒng)出錯(cuò),發(fā)生系統(tǒng)錯(cuò)誤1067, 進(jìn)程意外終止的兩種方法
本人因?yàn)閜hpstudy的MySQL數(shù)據(jù)庫與我的電腦上的MySQL數(shù)據(jù)庫發(fā)生沖突,當(dāng)我將MySQL服務(wù)器的服務(wù)名從MySQL改為MySQL5后,啟動(dòng)MySQL5服務(wù)后就報(bào)錯(cuò):系統(tǒng)出錯(cuò), 發(fā)生系統(tǒng)錯(cuò)誤 1067, 進(jìn)程意外終止,現(xiàn)在將這個(gè)解決方法分享給大家,需要的朋友可以參考下2024-06-06