数据库中有两个表 KistStatus
Và LastKistStatus
.后者将保存 KistStatus
的所有“最新”值。 .
KistStatus
有大约 174.000 条记录,LastKistStatus
应该有大约 9.500 条记录。
如果我手动插入记录(手动执行一条一条插入),LastKistStatus
将被正确填写。但是如果我执行sql导出文件,触发器似乎坏了。
触发器:
DROP TRIGGER IF EXISTS `KistStatusTrigger`;
DELIMITER //
CREATE TRIGGER `KistStatusTrigger` AFTER INSERT ON `KistStatus`
FOR EACH ROW begin
DECLARE id_exists Boolean;
DECLARE time_exists Timestamp;
-- Check LastKistStatus table
SELECT 1, `Timestamp`
INTO @id_exists, @time_exists
FROM LastKistStatus
WHERE LastKistStatus.idKist = NEW.idKist;
IF @id_exists > 0
THEN
IF @time_exists <= NEW.Timestamp
THEN
UPDATE LastKistStatus SET `Timestamp` = NEW.Timestamp, `idPartij` = NEW.idPartij, `Actie` = NEW.Actie, `idTaak` = NEW.idTaak, `idBewaarplaats` = NEW.idBewaarplaats, `Rij` = NEW.Rij, `Stapel` = NEW.Stapel, `Hoogte`= NEW.Hoogte, `KnolAantal` = NEW.KnolAantal, `Gewicht` = NEW.Gewicht, `idGebruiker` = NEW.idGebruiker, `Laatste` = NEW.Laatste WHERE `idKist` = NEW.idKist;
END IF;
ELSE
INSERT INTO LastKistStatus (`idKistStatus`, `idKist`, `Timestamp`, `idPartij`, `Actie`, `idTaak`, `idBewaarplaats`, `Rij`, `Stapel`, `Hoogte`, `KnolAantal`, `Gewicht`, `idGebruiker`, `Laatste` ) VALUES (NEW.idKistStatus, NEW.idKist, NEW.Timestamp, NEW.idPartij, NEW.Actie, NEW.idTaak, NEW.idBewaarplaats, NEW.Rij, NEW.Stapel, NEW.Hoogte, NEW.KnolAantal, NEW.Gewicht, NEW.idGebruiker, NEW.Laatste);
END IF;
END
//
DELIMITER ;
插入命令(从命令行完成) mysql -u *** -p TTTDB < KistStatus.sql
bên cạnh đó KistStatus.sql
有很多这样的行:
INSERT INTO `KistStatus` (`idKistStatus`, `idKist`, `Timestamp`, `idPartij`, `Actie`, `idTaak`, `idBewaarplaats`, `Rij`, `Stapel`, `Hoogte`, `KnolAantal`, `Gewicht`, `idGebruiker`, `Laatste`) VALUES
(1, 227862, '2015-09-04 14:15:29', 40, '3', 0, 260, 2060, 33980, 1, NULL, 0, 40, 1),
(21, 229522, '2015-09-04 14:15:29', 40, '3', 0, 260, 2060, 33980, 2, NULL, 0, 40, 1),
(1083, 51102, '2015-09-05 07:33:37', 80, '3', 0, 40, 440, 5060, 1, NULL, 0, 100, 1),
(1103, 51102, '2015-09-05 07:33:44', 80, '3', 0, 40, 440, 5060, 1, NULL, 0, 100, 2),
(1123, 51102, '2015-09-05 07:33:44', 80, '3', 0, 40, 440, 5060, 1, NULL, 0, 100, 1),
(1143, 22202, '2015-09-05 07:37:33', 80, '3', 0, 40, 420, 4820, 1, NULL, 0, 100, 1);
我也测试过它并按记录插入,但这并没有改变任何东西(除了永远插入......)
我做错了什么?我的触发器有问题吗?从命令行插入时不会正确触发吗?我现在没主意了
Tôi là một lập trình viên xuất sắc, rất giỏi!