2013-04-15 49 views
0

我有兩個表股票和訂單,我試圖讓扳機工作,以便在一個訂單已被放入訂單數量然後從股票數量領域。MYSQL後插入觸發器來更改字段值

DELIMITER $$ 
CREATE TRIGGER stock_update 
AFTER INSERT ON order 
FOR EACH ROW 
BEGIN 
SET @quantity = NEW.quantity 
UPDATE stock s; 
SET s.quantity = OLD.quantity - NEW.quantity 
FROM stock s, order o 
WHERE s.ID_stock = o.ID_stock; 
END; 
$$ 
DELIMITER; 

,但我剛開錯誤編號1064

+2

我認爲你必須經過錯誤的分號'更新股票s' – agim

+0

同意。這個是放錯了地方有 –

+0

請,後創建表的語句兩個表 – peterm

回答

0

有幾個問題:

  1. 順序是保留字,所以你需要使用反勾周圍
  2. 你不需要使用可變@Quantity
  3. 更新聲明是錯誤的
  4. DELIMITER and;應該用空格

分開試試這個

DELIMITER $$ 
CREATE TRIGGER stock_update 
AFTER INSERT ON `order` 
FOR EACH ROW 
BEGIN 
UPDATE stock s 
    SET s.quantity = s.quantity - NEW.quantity 
WHERE s.ID_stock = NEW.ID_stock; 
END $$ 
DELIMITER ; 
+0

感謝peterm的幫助,更改代碼完美工作。 – user2282255

0

我不能肯定它會工作,因爲我需要爲了測試它的表定義。 在每種情況下,您應刪除FROM子句和最後一行DELIMITER;。你也應該用分號結束SET @quantity = NEW.quantity這一行。

DELIMITER $$ 
CREATE TRIGGER stock_update 
AFTER INSERT ON order FOR EACH ROW 
BEGIN 
    UPDATE stock s; 
    SET s.quantity = OLD.quantity - NEW.quantity 
    WHERE s.ID_stock = NEW.ID_stock; 
END; 
$$