mysql中这个触发器有什么问题?

时间:2010-04-23 05:38:56

标签: mysql sql triggers

下面是我需要创建的触发器但它没有被创建。请任何伙伴可以解释我这个触发器有什么问题?请帮帮我。

DELIMITER $$
 CREATE TRIGGER property_history_update 
 AFTER UPDATE ON `properties`
 FOR EACH ROW BEGIN

 IF OLD.ListPrice != NEW.ListPrice THEN  
    INSERT INTO `property_history` 
      SET ListingKey = OLD.ListingKey,
           ListPrice = NEW.ListPrice,
       ListingStatus = OLD.ListingStatus,
     LastUpdatedTime = NEW.LocalLastModifiedOn;
 END IF;

END$$
DELIMITER ;

当我执行上述触发时,我收到如下错误:

  

致命错误:第99行的/var/www/phpmyadmin/libraries/import/sql.php超过了300秒的最长执行时间

1 个答案:

答案 0 :(得分:2)

通过没有WHERE子句的UPDATE传递属性中的所有行将具有线性(O(n)[n是行数的因子])运行时间。如果所有行都在ListPrice中发生变化,那么该时间可以加倍。

示例:如果运行“UPDATE属性SET ListPrice = 5;”表中有10,000行,请确保在property_history表中有10,000个UPDATE和最多10,000个INSERT。

请确保你有三(3)件事情:

  1. 未针对产品表运行批量更新
  2. 不使用不使用索引的WHERE子句
  3. 不使用MySQL Optimizer忽略其索引的WHERE子句