我试图做这样的事情,从我的供应商进口定价和股票。它并不总是起作用的。
在我从第三个表中添加变量prod_desc和prod_pic之前,它一直工作得很好。
只有在分类的情况下才能正常工作。
有什么建议吗?
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发布于 2014-05-05 21:59:24
products_id在products_description表中唯一吗?
如果不是,那么针对products_description表的查询可能返回多个行,如果发生这种情况,MySQL将抛出一个错误。
您可以向查询中添加一个LIMIT 1子句作为解决办法,以防止返回多个行。
(对于在执行插入时触发器为什么从phpMyAdmin“工作”,我没有任何其他解释,但是当脚本执行插入时,触发器“不工作”.如果在添加两个局部变量、第二个查询和一些额外的赋值之前,触发器“工作”。我看不出触发器有什么问题,局部变量名与列名之间的冲突似乎没有问题。语法看起来是正确的。
https://stackoverflow.com/questions/23482354
复制相似问题