Mysql #1442-Can';t更新表';销售价格';在存储的函数/触发器中,因为它已被语句使用

Mysql #1442-Can';t更新表';销售价格';在存储的函数/触发器中,因为它已被语句使用,mysql,Mysql,我试图在表中插入新行之前更新同一个表。 我想将具有相同产品标识的所有先前行的状态设置为0,然后插入状态为1的新行…请帮助。这是我写的mysql代码 DROP TRIGGER IF EXISTS `priceStatusUpdate`// CREATE TRIGGER `priceStatusUpdate` BEFORE INSERT ON `sale_price` FOR EACH ROW BEGIN UPDATE sale_price SET status=0 WHERE pr

我试图在表中插入新行之前更新同一个表。 我想将具有相同产品标识的所有先前行的状态设置为0,然后插入状态为1的新行…请帮助。这是我写的mysql代码

DROP TRIGGER IF EXISTS `priceStatusUpdate`//
CREATE TRIGGER `priceStatusUpdate` BEFORE INSERT ON `sale_price`
 FOR EACH ROW BEGIN
  UPDATE sale_price 
  SET status=0
  WHERE product_id=new.product_id;
END
//

请改用存储过程:

DELIMITER $$
CREATE PROCEDURE procedureName (IN p_product_id)
BEGIN
UPDATE sale_price SET status = 0 WHERE product_id = p_product_id;
INSERT INTO sale_price (product_id) VALUES (p_product_id);
END $$
DELIMITER ;
那就叫它

CALL procedureName(1);

你从哪里读到触发器是这样工作的?过程是如何被调用的?它是如何被调用的?您使用它,而不是像我发布的那样插入到表中并调用它,当然是由其他列扩展的。仍然不起作用…我在触发器中调用此过程,但出现相同的错误…您需要删除触发器当然:)此过程不会产生相同的错误。
DROP TRIGGER IF EXISTS `priceStatusUpdate`//
CREATE TRIGGER `priceStatusUpdate` BEFORE INSERT ON `sale_price`
FOR EACH ROW BEGIN
    SET NEW.status= 0;
END