2011-07-10 32 views
1
CREATE TRIGGER history BEFORE UPDATE ON bestbuy 

FOR EACH ROW 
BEGIN 
IF NEW.salePrice <> OLD.salePrice THEN 

INSERT INTO history_price (modelNumber,salePrice) 
     VALUES (OLD.modelNumber,OLD.salePrice); 

     ELSEIF NEW.salePrice = OLD.salePrice THEN 
      SET NEW.salePrice = OLD.salePrice; 

    END IF; 

END 

我的问题: 是有效使用MySQL触发器:我可以使用更新吗?

CREATE TRIGGER前史更换开百思买

回答

1

不,它不是 - 有效事件仅INSERTUPDATEDELETE

您确定要使用REPLACE更新数据吗? - 你可以改变这种状况,与INSERT ... ON DUPLICATE KEY UPDATE更新 - 让你的触发器将运行

编辑解决意见

采取MySQL网站看看INSERT ... ON DUPLICATE KEY UPDATE Syntax - 这是一个普通的INSERT,该条款在它 - 我也认为它比REPLACE更好的执行者,因为这不会删除记录再次插入它,它只是更新值

+0

我使用此语句来加载数据:LOAD XML LOCAL INFILE 'c :/users/ryan/desktop/BBY_PRICES_FULL.xml' REPLACE INTO table bestbuy 行''识别的行。你知道是否有办法解决这个问题? –

+0

是的,更改'REPLACE INTO表bestbuy行识别'''带插入bestbuy(字段)VALUES(值)重复密钥更新字段1 = val1,field2 = val2等' –

+0

对于值,他们会是像VALUES('')这样的XML标签? –