【问题标题】:triggers to multiply 'trigger-based columns' in mysql触发器在mysql中乘以“基于触发器的列”
【发布时间】:2013-08-08 23:14:51
【问题描述】:

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

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 相乘并将其存储在另一列中(比如说“乘法”)。

我这样做了:

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 尚不支持“一个表具有相同操作时间和事件的多个触发器”。

我应该如何解决这个问题?

【问题讨论】:

  • OriginIndex 和 DestinationIndex 是双倍 (10,4)。

标签: mysql database phpmyadmin multiplication


【解决方案1】:

我认为你可以使用

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//

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2019-08-07
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多