触发器在mysql中乘以'基于触发器的列'

时间:2013-08-08 23:14:52

标签: mysql database phpmyadmin multiplication

我之前已经问过这个问题,我想详细说明一下。

Triggers to connect multiple tables

我有以下触发器(有点像我之前问过的那个):

CREATE TRIGGER trigger_test1
BEFORE INSERT ON test1 
FOR EACH ROW 
  SET NEW.OriginIndex = (SELECT index1 FROM cities WHERE city = NEW.Origin),
    NEW.DestinationIndex = (SELECT index1 FROM cities WHERE city =NEW.Destination);

这部分效果很好。现在我想将OriginIndex和DestinationIndex相乘并将其存储在另一列中(假设为'Multiplication')。

我这样做了:

CREATE TRIGGER trigger_test1
BEFORE INSERT ON test1 
FOR EACH ROW 
  SET NEW.OriginIndex = (SELECT index1 FROM cities WHERE city = NEW.Origin),
    NEW.DestinationIndex = (SELECT index1 FROM cities WHERE city =NEW.Destination),
        NEW.Multiplication = (SELECT NEW.OriginIndex*NEW.DestinationIndex);

这给出了一个错误'这个版本的MySQL还不支持'多个触发器,具有相同的一个表的动作时间和事件''。

我该怎么处理这个问题?

1 个答案:

答案 0 :(得分:0)

我认为你可以使用

DELIMITER //
CREATE TRIGGER trigger_test1
BEFORE INSERT ON test1 
BEGIN
FOR EACH ROW 
SET NEW.OriginIndex = (SELECT index1 FROM cities WHERE city = NEW.Origin);
SET NEW.DestinationIndex = (SELECT index1 FROM cities WHERE city =NEW.Destination);
SET NEW.Multiplication = (NEW.OriginIndex*NEW.DestinationIndex);
END//

我希望这有帮助。