首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多变量和多表的MySQL触发器

问具有多变量和多表的MySQL触发器
EN

Stack Overflow用户
提问于 2014-05-05 21:38:07
回答 1查看 1.7K关注 0票数 0

我试图做这样的事情,从我的供应商进口定价和股票。它并不总是起作用的。

  • 当我从我的phpMyAdmin运行良好时,触发器就会启动,数据也会很好地导入。
  • 当我从php脚本进行操作时,将CSV放入表中根本不起作用。

在我从第三个表中添加变量prod_desc和prod_pic之前,它一直工作得很好。

只有在分类的情况下才能正常工作。

有什么建议吗?

代码语言:javascript
复制
CREATE TRIGGER triggername BEFORE INSERT ON products FOR EACH ROW BEGIN 
DECLARE name_cat VARCHAR( 255 ) ;
DECLARE prod_desc TEXT ;
DECLARE prod_pict  VARCHAR( 255 ) ;

SELECT category_name
INTO name_cat
FROM products_categories
WHERE cat_id = NEW.products_cat_id;

SELECT products_description, products_picture
INTO prod_desc, prod_pic
FROM products_description
WHERE products_id = NEW.products_id;

SET NEW.categories_name = name_cat, NEW.products_picture=prod_pic, NEW.products_description = prod_desc, NEW.Products_id=CONCAT('DEP',NEW.Products);

END
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 21:59:24

products_id在products_description表中唯一吗?

如果不是,那么针对products_description表的查询可能返回多个行,如果发生这种情况,MySQL将抛出一个错误。

您可以向查询中添加一个LIMIT 1子句作为解决办法,以防止返回多个行。

(对于在执行插入时触发器为什么从phpMyAdmin“工作”,我没有任何其他解释,但是当脚本执行插入时,触发器“不工作”.如果在添加两个局部变量、第二个查询和一些额外的赋值之前,触发器“工作”。我看不出触发器有什么问题,局部变量名与列名之间的冲突似乎没有问题。语法看起来是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23482354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档