2013-07-19 36 views
0

我想在表中插入新行之前更新同一個表。 我想設置具有相同的product_id以前的所有行的狀態爲0,並在此之後插入狀態爲1的新行....請幫助。這是我寫的代碼的MySQL ..#1442 - 無法更新存儲的函數/觸發器中的表'sale_price',因爲它已被語句使用

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 
// 
+0

叫什麼你在哪裏看觸發這種方式工作? –

回答

1

改爲使用存儲過程:

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); 
+0

如何調用該過程? –

+0

你的意思是它是如何被調用的?你可以使用它來代替插入表格,並將其稱爲我發佈的內容,當然可以通過其他列進行擴展。 – fancyPants

+0

仍然無法正常工作.....我在我的觸發器中調用這個程序,但同樣的錯誤發生... – user2599572

0
DROP TRIGGER IF EXISTS `priceStatusUpdate`// 
CREATE TRIGGER `priceStatusUpdate` BEFORE INSERT ON `sale_price` 
FOR EACH ROW BEGIN 
    SET NEW.status= 0; 
END 
相關問題