我正在尝试做这样的事情来从我的供应商那里导入定价和库存。 它总是不起作用。
它工作正常,直到我从第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
答案 0 :(得分:0)
products_id
表格中products_description
是唯一的吗?
如果没有,那么针对products_description
表的查询可能会返回多行,如果发生这种情况,MySQL将抛出错误。
您可以在查询中添加LIMIT 1
子句作为解决方法,以防止返回多行。
(当执行INSERT时,我没有任何其他解释为什么触发器在phpMyAdmin中“正常工作”,但是当脚本执行INSERT时“触摸不动”...如果触发器“正在工作” “在你添加了几个局部变量,第二个查询和一些额外的赋值之前。我没有看到触发器有任何问题,看起来与列名称的局部变量名称冲突似乎没有问题。语法看起来是正确的。