MySQL触发器具有多个变量和表

时间:2014-05-05 21:38:07

标签: php mysql sql triggers

我正在尝试做这样的事情来从我的供应商那里导入定价和库存。 它总是不起作用。

  • 当我从我的phpMyAdmin工作正常时,触发器启动 并且导入的数据很好。
  • 当我从php脚本中执行此操作时,将CSV收费到表格产品中根本不起作用。

它工作正常,直到我从第3个表中添加了变量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

1 个答案:

答案 0 :(得分:0)

products_id表格中products_description是唯一的吗?

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

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

(当执行INSERT时,我没有任何其他解释为什么触发器在phpMyAdmin中“正常工作”,但是当脚本执行INSERT时“触摸不动”...如果触发器“正在工作” “在你添加了几个局部变量,第二个查询和一些额外的赋值之前。我没有看到触发器有任何问题,看起来与列名称的局部变量名称冲突似乎没有问题。语法看起来是正确的。