下面是我需要创建的触发器,但它没有被创建。请任何朋友可以解释我这个触发器有什么问题?请帮帮我。
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 /库/IMPUL/Sq.PHLPHP中超过300秒的最大执行时间
最佳答案
通过不带WHERE子句的UPDATE传递属性中的所有行将有一个线性(O(n)[n是行数的因子])运行时间。如果所有行的ListPrice都发生了变化,则该时间可以加倍。
示例:如果运行“UPDATE properties SET ListPrice=5;”,并且表中有10000行,请放心,property_history表中会有10000个更新和多达10000个插入。
请确认三件事:
不针对products表运行批量更新
不使用不使用索引的WHERE子句
不使用其索引被MySQL优化器忽略的WHERE子句
关于mysql - mysql中的此触发器有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2696442/