2013-03-20 70 views
1

嗨,大家好,我試圖做一個觸發器,以便如果啤酒的價格增加超過1美元,那麼我將該條的名稱添加到RIPOFFBAR表中。觸發每行

CREATE TRIGGER PriceTrig 
AFTER UPDATE ON Sells 
FOR EACH ROW 
BEGIN 
IF (NEW.price > OLD.price + 1.00) 
THEN 
INSERT INTO RipoffBars(bar) 
VALUES(NEW.bar); 
END IF; 
END; 

,正如你可以看到我用於每個一行IF語句 開始,但由於某種原因,它是不工作的任何幫助,將不勝感激

回答

3
所做

第一個錯誤是使用「 trigger_time = AFTER「當您嘗試更新該行時。根據mysql手冊:

在BEFORE觸發器中,如果您具有UPDATE特權,您也可以使用SET NEW.col_name = value更改其值。這意味着您可以使用觸發器修改要插入新行或用於更新行的值。​​

詳情從這裏檢查手冊: http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

我已經創建了兩個表,插入數據並寫入觸發以下的信息:

CREATE TABLE:

表1 :create table sells (beer_name varchar(200),beer_price int(20));

表2:create table ripo_off_bar (beer_name varchar(200));

INSERT:

Insert into sells values("Root Beer", 2); 

TRIGGER:

DELIMITER $$ 

CREATE TRIGGER price_update BEFORE UPDATE ON sells 

FOR EACH ROW 

BEGIN 

IF(NEW.beer_price > OLD.beer_price + 1) THEN 

INSERT INTO ripo_off_bar (beer_name) VALUES (NEW.beer_name); 

END IF; 

END;$$ 

UPDATE:

update sells SET beer_price=8 where beer_name="Root Beer"; 

後,如果您VIEW的ripo_off_bar表你會看到有已經加入你的更新beer_name信息:

VIEW:

SELECT * FROM ripo_off_bar; 

我加入的也編碼截圖。希望這些能幫助你完成你的任務。快樂編碼!

Trigger Creation & Updated value

相關問題