日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql触发器调用存储过程出错_mysql 触发器中调用存储过程

發(fā)布時間:2025/3/15 数据库 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql触发器调用存储过程出错_mysql 触发器中调用存储过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

想要在MYSQL的觸發(fā)器中調用存儲過程,但是IDE提示:

0A000 Not allowed to return a result set from a trigger

觸發(fā)器代碼如下:

DELIMITER $$

CREATE TRIGGER tri_ContactCompany_Insert AFTER INSERT

ON contactcompany FOR EACH ROW

# 創(chuàng)建時間:2019年6月27日 17:43:52

# 功能簡介:表 contactcompany 的 INSERT 觸發(fā)器

BEGIN

# 1. 新增行后修改本行的字段 categoryNames,以及對應的多行數據表 contactcompanyver

SELECT @sid := NEW.sid, @categories := NEW.categories

FROM NEW;

CALL usp_TriContactCompanyInsert(@sid,@categories);

END;$$

DELIMITER ;

觸發(fā)器中調用的存儲過程代碼如下:

delimiter $$

# 下面的 `root`@`%`表示允許任意機器上通過用戶root使用本存儲過程

CREATE PROCEDURE `usp_TriContactCompanyInsert`(IN sid VARCHAR(50),IN categories VARCHAR(100))

# 創(chuàng)建時間:2019年6月27日 12:33:18

# 功能簡介:表ContactCompany新增一行記錄時,更新表contactcompanyver中的數據

# 將表 ContactCompany 字段 categories 中的值按照英文逗號分隔形成多行

BEGIN

# 0. 創(chuàng)建臨時表保存中間數據

CREATE TEMPORARY TABLE category(sid VARCHAR(100),name VARCHAR(100)) CHARSET = utf8;

# 1. 刪除歷史數據

DELETE FROM contactcompanyver WHERE sid=sid;

# 2. 向表 contactcompanyver 寫入多行數據

INSERT INTO category

SELECT t2.id,t2.name

FROM

(

SELECT

SUBSTRING_INDEX(SUBSTRING_INDEX(categories,',',help_topic_id+1),',',-1) AS categoryId

FROM

mysql.help_topic

WHERE

help_topic_id < LENGTH(categories)-LENGTH(REPLACE(categories,',',''))+1

) t1

LEFT OUTER JOIN contactcategory t2

ON t1.categoryId = t2.id

WHERE t2.name IS NOT NULL;

INSERT INTO contactcompanyver

(sid, category)

SELECT sid, name

FROM category;

# 3. 修改表 ContactCompany 中的字段 categoryNames 為名稱串聯(lián)

SELECT @categoryNames := group_concat(name)

FROM category;

update contactcompany SET categoryNames = @categoryNames WHERE sid=sid;

END;$$

上面給出的提示是說觸發(fā)器中不能使用存儲過程?

那么我想要在觸發(fā)器中執(zhí)行一系列邏輯,這些邏輯要寫不少代碼,又不想直接寫在觸發(fā)器中(這個觸發(fā)器中以后可能還會追加其他邏輯)

我的目標是將一系列邏輯構成一個功能,然后在觸發(fā)器中調用,要如何實現(xiàn)這個效果?

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的mysql触发器调用存储过程出错_mysql 触发器中调用存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。