现在,事情是这样的:
当我在tbl\u中插入一行time1和time2的值时,我的触发器会在tbl\u b中插入两个不同的行,每列一行,当它应该插入一行time1和time2的值时。
此触发器的目的是将varchar列中导入的时间数据转换为整数列中的秒数。关键是导入的数据可以是10:00或1000:00。
虽然我意识到有一种更简单的方法可以做到这一点,但我真的很想知道这段代码有什么问题。
提前谢谢!
DELIMITER $$
CREATE TRIGGER tr_one
AFTER INSERT ON tbl_a
FOR EACH ROW
BEGIN
IF CHAR_LENGTH(NEW.time1) = 5 THEN
INSERT INTO tbl_b(time1) VALUES((((SUBSTRING(NEW.time1, 1, 5) * 60) + SUBSTRING(NEW.time1, 7, 2)) * 60));
END IF;
IF CHAR_LENGTH(NEW.time2) = 5 THEN
INSERT INTO tbl_b (time2) VALUES (((SUBSTRING(NEW.time2, 1, 5) * 60) + SUBSTRING(NEW.time2, 7, 2)) * 60);
END IF;
END
$$
1条答案
按热度按时间w80xi6nr1#
你得到两行,因为你做了两个插入。您需要做的是找出这两个新值是什么,然后同时插入这两个值。这应该是你想要的:
注意,通过实际搜索
:
在小时和分钟值之间,并使用该值控制子字符串选择。