2013-11-09 14 views
0

我有2個表:TRIGGER創建兩個表,但得到錯誤信息

  1. 指令 - 存儲所有信息,從我的購物車
  2. 項 - 商店ID | scode |產品|價格| saleprice |庫存

當我在'訂單'中將訂單插入到數據庫中時,我想到了下面的觸發器我希望它在'商品表'中將'庫存'數量更新爲-1。

CREATE TRIGGER `order_updater` AFTER INSERT ON `orders` 
FOR EACH ROW UPDATE items 
SET inventory = inventory - 1 
WHERE id = new.id 
END; 

當我嘗試將其添加在phpMyAdmin的觸發器我不斷收到這樣的信息:

一個或多個錯誤發生在處理您的請求:

下面的查詢失敗:「CREATE TRIGGER orer_update插入前items FOR EACH ROW CREATE TRIGGER order_updater插入後orders FOR EACH ROW UPDATE項目SET inventory = inventory - 1 WHERE id = new.id END;「

MySQL說:#1303 - Can't create a TRIGGER from within another stored routine

  1. 這可以用這個觸發器來完成嗎?
  2. 觸發器是否會更新特定項目或所有項目?
  3. 是否可以將觸發器添加到產品.htm頁面,還是需要在phpMyAdmin中?

我不確定代碼是否完全正確,因爲我是新手,任何指針將不勝感激。


* UPDATE: phpMyAdmin的:我複製這從一個頁面,它說:版本信息:4.0.8,最新的穩定版本:4.0.9 *

回答

0

試着這麼做:

DELIMITER $$ 

CREATE TRIGGER `order_updater` AFTER INSERT ON `orders` 
FOR EACH ROW 
BEGIN 
    UPDATE `items` 
    SET `inventory` = `inventory` - 1 
    WHERE `id` = new.`id`; 
END$$ 

DELIMITER ; 

UPDATE

您使用的是什麼版本的phpMyAdmin?以下示例使用版本phpMyAdmin 4.1.0-beta2,可以正常工作。

enter image description here

+0

乾杯仍收到錯誤消息:處理您的請求:下面的查詢失敗:「CREATE TRIGGER'order_updater' BEFORE INSERT ON'items' FOR EACH ROW DELIMITER $$ CREATE TRIGGER'order_updater' INSERT AFTER ON'orders' FOR EACH ROW BEGIN UPDATE'items' SET'inventory' ='inventory' - 1 WHERE'id' = new.'''' END END DELIMITER;「 MySQL說:#1064 - 你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'$$ CREATE TRIGGER'order_updater'後使用正確的語法使用'INSERT ON'EOR ROW BEG'order by' – user2940698

+1

您是否嘗試在其他觸發器內創建觸發器? – wchiquito

+0

我真的不知道如何做到這一點,但根本沒有觸發器。我正在嘗試創建一個來完成我上面概述的內容。你不能在另一個觸發器內創建觸發器嗎? – user2940698