tm_hints : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_hints` BEFORE INSERT ON `tm_hints` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_hints : AFTER INSERT => ["INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`iRank`)"]
CREATE TRIGGER `after_insert_tm_hints` AFTER INSERT ON `tm_hints` FOR EACH ROW BEGIN INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`iRank`); END

tm_hints : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_hints` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`iRank`) ; END IF"]
CREATE TRIGGER `before_update_tm_hints` BEFORE UPDATE ON `tm_hints` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_hints` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`iRank`) ; END IF; END

tm_hints : AFTER UPDATE => []
tm_hints : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_hints` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`iRank`, 1)"]
CREATE TRIGGER `before_delete_tm_hints` BEFORE DELETE ON `tm_hints` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_hints` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints` (`ID`,`iVersion`,`idTask`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`iRank`, 1); END

tm_hints : AFTER DELETE => []
tm_hints_strings : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_hints_strings` BEFORE INSERT ON `tm_hints_strings` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_hints_strings : AFTER INSERT => ["INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`) VALUES (NEW.`ID`,@curVersion,NEW.`idHint`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sContent`)"]
CREATE TRIGGER `after_insert_tm_hints_strings` AFTER INSERT ON `tm_hints_strings` FOR EACH ROW BEGIN INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`) VALUES (NEW.`ID`,@curVersion,NEW.`idHint`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sContent`); END

tm_hints_strings : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idHint` <=> NEW.`idHint` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sContent` <=> NEW.`sContent`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_hints_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`) VALUES (NEW.`ID`,@curVersion,NEW.`idHint`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sContent`) ; END IF"]
CREATE TRIGGER `before_update_tm_hints_strings` BEFORE UPDATE ON `tm_hints_strings` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idHint` <=> NEW.`idHint` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sContent` <=> NEW.`sContent`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_hints_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`) VALUES (NEW.`ID`,@curVersion,NEW.`idHint`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sContent`) ; END IF; END

tm_hints_strings : AFTER UPDATE => []
tm_hints_strings : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_hints_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idHint`,OLD.`sLanguage`,OLD.`sTranslator`,OLD.`sContent`, 1)"]
CREATE TRIGGER `before_delete_tm_hints_strings` BEFORE DELETE ON `tm_hints_strings` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_hints_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_hints_strings` (`ID`,`iVersion`,`idHint`,`sLanguage`,`sTranslator`,`sContent`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idHint`,OLD.`sLanguage`,OLD.`sTranslator`,OLD.`sContent`, 1); END

tm_hints_strings : AFTER DELETE => []
tm_recordings : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_recordings` BEFORE INSERT ON `tm_recordings` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_recordings : AFTER INSERT => ["INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sData`,NEW.`sDateCreation`)"]
CREATE TRIGGER `after_insert_tm_recordings` AFTER INSERT ON `tm_recordings` FOR EACH ROW BEGIN INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sData`,NEW.`sDateCreation`); END

tm_recordings : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sData` <=> NEW.`sData` AND OLD.`sDateCreation` <=> NEW.`sDateCreation`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_recordings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sData`,NEW.`sDateCreation`) ; END IF"]
CREATE TRIGGER `before_update_tm_recordings` BEFORE UPDATE ON `tm_recordings` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sData` <=> NEW.`sData` AND OLD.`sDateCreation` <=> NEW.`sDateCreation`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_recordings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sData`,NEW.`sDateCreation`) ; END IF; END

tm_recordings : AFTER UPDATE => []
tm_recordings : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_recordings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`idUser`,OLD.`idPlatform`,OLD.`sData`,OLD.`sDateCreation`, 1)"]
CREATE TRIGGER `before_delete_tm_recordings` BEFORE DELETE ON `tm_recordings` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_recordings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_recordings` (`ID`,`iVersion`,`idTask`,`idUser`,`idPlatform`,`sData`,`sDateCreation`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`idUser`,OLD.`idPlatform`,OLD.`sData`,OLD.`sDateCreation`, 1); END

tm_recordings : AFTER DELETE => []
tm_solutions : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_solutions` BEFORE INSERT ON `tm_solutions` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_solutions : AFTER INSERT => ["INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`bInSolution`,NEW.`sLangProg`,NEW.`sGroup`,NEW.`sAuthor`)"]
CREATE TRIGGER `after_insert_tm_solutions` AFTER INSERT ON `tm_solutions` FOR EACH ROW BEGIN INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`bInSolution`,NEW.`sLangProg`,NEW.`sGroup`,NEW.`sAuthor`); END

tm_solutions : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`bInSolution` <=> NEW.`bInSolution` AND OLD.`sLangProg` <=> NEW.`sLangProg` AND OLD.`sGroup` <=> NEW.`sGroup` AND OLD.`sAuthor` <=> NEW.`sAuthor`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_solutions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`bInSolution`,NEW.`sLangProg`,NEW.`sGroup`,NEW.`sAuthor`) ; END IF"]
CREATE TRIGGER `before_update_tm_solutions` BEFORE UPDATE ON `tm_solutions` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`bInSolution` <=> NEW.`bInSolution` AND OLD.`sLangProg` <=> NEW.`sLangProg` AND OLD.`sGroup` <=> NEW.`sGroup` AND OLD.`sAuthor` <=> NEW.`sAuthor`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_solutions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`bInSolution`,NEW.`sLangProg`,NEW.`sGroup`,NEW.`sAuthor`) ; END IF; END

tm_solutions : AFTER UPDATE => []
tm_solutions : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_solutions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`bInSolution`,OLD.`sLangProg`,OLD.`sGroup`,OLD.`sAuthor`, 1)"]
CREATE TRIGGER `before_delete_tm_solutions` BEFORE DELETE ON `tm_solutions` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_solutions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions` (`ID`,`iVersion`,`idTask`,`bInSolution`,`sLangProg`,`sGroup`,`sAuthor`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`bInSolution`,OLD.`sLangProg`,OLD.`sGroup`,OLD.`sAuthor`, 1); END

tm_solutions : AFTER DELETE => []
tm_solutions_strings : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_solutions_strings` BEFORE INSERT ON `tm_solutions_strings` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_solutions_strings : AFTER INSERT => ["INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`) VALUES (NEW.`ID`,@curVersion,NEW.`idSolution`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sSource`)"]
CREATE TRIGGER `after_insert_tm_solutions_strings` AFTER INSERT ON `tm_solutions_strings` FOR EACH ROW BEGIN INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`) VALUES (NEW.`ID`,@curVersion,NEW.`idSolution`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sSource`); END

tm_solutions_strings : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idSolution` <=> NEW.`idSolution` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sSource` <=> NEW.`sSource`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_solutions_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`) VALUES (NEW.`ID`,@curVersion,NEW.`idSolution`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sSource`) ; END IF"]
CREATE TRIGGER `before_update_tm_solutions_strings` BEFORE UPDATE ON `tm_solutions_strings` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idSolution` <=> NEW.`idSolution` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sSource` <=> NEW.`sSource`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_solutions_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`) VALUES (NEW.`ID`,@curVersion,NEW.`idSolution`,NEW.`sLanguage`,NEW.`sTranslator`,NEW.`sSource`) ; END IF; END

tm_solutions_strings : AFTER UPDATE => []
tm_solutions_strings : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_solutions_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idSolution`,OLD.`sLanguage`,OLD.`sTranslator`,OLD.`sSource`, 1)"]
CREATE TRIGGER `before_delete_tm_solutions_strings` BEFORE DELETE ON `tm_solutions_strings` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_solutions_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_solutions_strings` (`ID`,`iVersion`,`idSolution`,`sLanguage`,`sTranslator`,`sSource`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idSolution`,OLD.`sLanguage`,OLD.`sTranslator`,OLD.`sSource`, 1); END

tm_solutions_strings : AFTER DELETE => []
tm_source_codes : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_source_codes` BEFORE INSERT ON `tm_source_codes` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_source_codes : AFTER INSERT => ["INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`sParams`,NEW.`sName`,NEW.`sSource`,NEW.`bEditable`,NEW.`sType`,NEW.`bActive`,NEW.`bSubmission`,NEW.`iRank`)"]
CREATE TRIGGER `after_insert_tm_source_codes` AFTER INSERT ON `tm_source_codes` FOR EACH ROW BEGIN INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`sParams`,NEW.`sName`,NEW.`sSource`,NEW.`bEditable`,NEW.`sType`,NEW.`bActive`,NEW.`bSubmission`,NEW.`iRank`); END

tm_source_codes : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sDate` <=> NEW.`sDate` AND OLD.`sParams` <=> NEW.`sParams` AND OLD.`sName` <=> NEW.`sName` AND OLD.`sSource` <=> NEW.`sSource` AND OLD.`bEditable` <=> NEW.`bEditable` AND OLD.`sType` <=> NEW.`sType` AND OLD.`bSubmission` <=> NEW.`bSubmission` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_source_codes` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`sParams`,NEW.`sName`,NEW.`sSource`,NEW.`bEditable`,NEW.`sType`,NEW.`bActive`,NEW.`bSubmission`,NEW.`iRank`) ; END IF"]
CREATE TRIGGER `before_update_tm_source_codes` BEFORE UPDATE ON `tm_source_codes` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sDate` <=> NEW.`sDate` AND OLD.`sParams` <=> NEW.`sParams` AND OLD.`sName` <=> NEW.`sName` AND OLD.`sSource` <=> NEW.`sSource` AND OLD.`bEditable` <=> NEW.`bEditable` AND OLD.`sType` <=> NEW.`sType` AND OLD.`bSubmission` <=> NEW.`bSubmission` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_source_codes` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`sParams`,NEW.`sName`,NEW.`sSource`,NEW.`bEditable`,NEW.`sType`,NEW.`bActive`,NEW.`bSubmission`,NEW.`iRank`) ; END IF; END

tm_source_codes : AFTER UPDATE => []
tm_source_codes : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_source_codes` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idUser`,OLD.`idTask`,OLD.`idPlatform`,OLD.`sDate`,OLD.`sParams`,OLD.`sName`,OLD.`sSource`,OLD.`bEditable`,OLD.`sType`,OLD.`bActive`,OLD.`bSubmission`,OLD.`iRank`, 1)"]
CREATE TRIGGER `before_delete_tm_source_codes` BEFORE DELETE ON `tm_source_codes` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_source_codes` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_source_codes` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`sParams`,`sName`,`sSource`,`bEditable`,`sType`,`bActive`,`bSubmission`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idUser`,OLD.`idTask`,OLD.`idPlatform`,OLD.`sDate`,OLD.`sParams`,OLD.`sName`,OLD.`sSource`,OLD.`bEditable`,OLD.`sType`,OLD.`bActive`,OLD.`bSubmission`,OLD.`iRank`, 1); END

tm_source_codes : AFTER DELETE => []
tm_submissions : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_submissions` BEFORE INSERT ON `tm_submissions` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_submissions : AFTER INSERT => ["INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`idSourceCode`,NEW.`bManualCorrection`,NEW.`bSuccess`,NEW.`nbTestsTotal`,NEW.`nbTestsPassed`,NEW.`iScore`,NEW.`bCompilError`,NEW.`sCompilMsg`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`sFirstUserOutput`,NEW.`sFirstExpectedOutput`,NEW.`sManualScoreDiffComment`,NEW.`bEvaluated`,NEW.`sMode`,NEW.`sReturnUrl`,NEW.`idUserAnswer`,NEW.`iChecksum`)"]
CREATE TRIGGER `after_insert_tm_submissions` AFTER INSERT ON `tm_submissions` FOR EACH ROW BEGIN INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`idSourceCode`,NEW.`bManualCorrection`,NEW.`bSuccess`,NEW.`nbTestsTotal`,NEW.`nbTestsPassed`,NEW.`iScore`,NEW.`bCompilError`,NEW.`sCompilMsg`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`sFirstUserOutput`,NEW.`sFirstExpectedOutput`,NEW.`sManualScoreDiffComment`,NEW.`bEvaluated`,NEW.`sMode`,NEW.`sReturnUrl`,NEW.`idUserAnswer`,NEW.`iChecksum`); END

tm_submissions : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sDate` <=> NEW.`sDate` AND OLD.`idSourceCode` <=> NEW.`idSourceCode` AND OLD.`bManualCorrection` <=> NEW.`bManualCorrection` AND OLD.`bSuccess` <=> NEW.`bSuccess` AND OLD.`nbTestsTotal` <=> NEW.`nbTestsTotal` AND OLD.`nbTestsPassed` <=> NEW.`nbTestsPassed` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`bCompilError` <=> NEW.`bCompilError` AND OLD.`sCompilMsg` <=> NEW.`sCompilMsg` AND OLD.`sErrorMsg` <=> NEW.`sErrorMsg` AND OLD.`sMetadata` <=> NEW.`sMetadata` AND OLD.`sFirstUserOutput` <=> NEW.`sFirstUserOutput` AND OLD.`sFirstExpectedOutput` <=> NEW.`sFirstExpectedOutput` AND OLD.`sManualScoreDiffComment` <=> NEW.`sManualScoreDiffComment` AND OLD.`bEvaluated` <=> NEW.`bEvaluated` AND OLD.`sMode` <=> NEW.`sMode` AND OLD.`sReturnUrl` <=> NEW.`sReturnUrl` AND OLD.`idUserAnswer` <=> NEW.`idUserAnswer` AND OLD.`iChecksum` <=> NEW.`iChecksum`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`idSourceCode`,NEW.`bManualCorrection`,NEW.`bSuccess`,NEW.`nbTestsTotal`,NEW.`nbTestsPassed`,NEW.`iScore`,NEW.`bCompilError`,NEW.`sCompilMsg`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`sFirstUserOutput`,NEW.`sFirstExpectedOutput`,NEW.`sManualScoreDiffComment`,NEW.`bEvaluated`,NEW.`sMode`,NEW.`sReturnUrl`,NEW.`idUserAnswer`,NEW.`iChecksum`) ; END IF"]
CREATE TRIGGER `before_update_tm_submissions` BEFORE UPDATE ON `tm_submissions` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sDate` <=> NEW.`sDate` AND OLD.`idSourceCode` <=> NEW.`idSourceCode` AND OLD.`bManualCorrection` <=> NEW.`bManualCorrection` AND OLD.`bSuccess` <=> NEW.`bSuccess` AND OLD.`nbTestsTotal` <=> NEW.`nbTestsTotal` AND OLD.`nbTestsPassed` <=> NEW.`nbTestsPassed` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`bCompilError` <=> NEW.`bCompilError` AND OLD.`sCompilMsg` <=> NEW.`sCompilMsg` AND OLD.`sErrorMsg` <=> NEW.`sErrorMsg` AND OLD.`sMetadata` <=> NEW.`sMetadata` AND OLD.`sFirstUserOutput` <=> NEW.`sFirstUserOutput` AND OLD.`sFirstExpectedOutput` <=> NEW.`sFirstExpectedOutput` AND OLD.`sManualScoreDiffComment` <=> NEW.`sManualScoreDiffComment` AND OLD.`bEvaluated` <=> NEW.`bEvaluated` AND OLD.`sMode` <=> NEW.`sMode` AND OLD.`sReturnUrl` <=> NEW.`sReturnUrl` AND OLD.`idUserAnswer` <=> NEW.`idUserAnswer` AND OLD.`iChecksum` <=> NEW.`iChecksum`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`) VALUES (NEW.`ID`,@curVersion,NEW.`idUser`,NEW.`idTask`,NEW.`idPlatform`,NEW.`sDate`,NEW.`idSourceCode`,NEW.`bManualCorrection`,NEW.`bSuccess`,NEW.`nbTestsTotal`,NEW.`nbTestsPassed`,NEW.`iScore`,NEW.`bCompilError`,NEW.`sCompilMsg`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`sFirstUserOutput`,NEW.`sFirstExpectedOutput`,NEW.`sManualScoreDiffComment`,NEW.`bEvaluated`,NEW.`sMode`,NEW.`sReturnUrl`,NEW.`idUserAnswer`,NEW.`iChecksum`) ; END IF; END

tm_submissions : AFTER UPDATE => []
tm_submissions : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idUser`,OLD.`idTask`,OLD.`idPlatform`,OLD.`sDate`,OLD.`idSourceCode`,OLD.`bManualCorrection`,OLD.`bSuccess`,OLD.`nbTestsTotal`,OLD.`nbTestsPassed`,OLD.`iScore`,OLD.`bCompilError`,OLD.`sCompilMsg`,OLD.`sErrorMsg`,OLD.`sMetadata`,OLD.`sFirstUserOutput`,OLD.`sFirstExpectedOutput`,OLD.`sManualScoreDiffComment`,OLD.`bEvaluated`,OLD.`sMode`,OLD.`sReturnUrl`,OLD.`idUserAnswer`,OLD.`iChecksum`, 1)"]
CREATE TRIGGER `before_delete_tm_submissions` BEFORE DELETE ON `tm_submissions` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions` (`ID`,`iVersion`,`idUser`,`idTask`,`idPlatform`,`sDate`,`idSourceCode`,`bManualCorrection`,`bSuccess`,`nbTestsTotal`,`nbTestsPassed`,`iScore`,`bCompilError`,`sCompilMsg`,`sErrorMsg`,`sMetadata`,`sFirstUserOutput`,`sFirstExpectedOutput`,`sManualScoreDiffComment`,`bEvaluated`,`sMode`,`sReturnUrl`,`idUserAnswer`,`iChecksum`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idUser`,OLD.`idTask`,OLD.`idPlatform`,OLD.`sDate`,OLD.`idSourceCode`,OLD.`bManualCorrection`,OLD.`bSuccess`,OLD.`nbTestsTotal`,OLD.`nbTestsPassed`,OLD.`iScore`,OLD.`bCompilError`,OLD.`sCompilMsg`,OLD.`sErrorMsg`,OLD.`sMetadata`,OLD.`sFirstUserOutput`,OLD.`sFirstExpectedOutput`,OLD.`sManualScoreDiffComment`,OLD.`bEvaluated`,OLD.`sMode`,OLD.`sReturnUrl`,OLD.`idUserAnswer`,OLD.`iChecksum`, 1); END

tm_submissions : AFTER DELETE => []
tm_submissions_subtasks : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_submissions_subtasks` BEFORE INSERT ON `tm_submissions_subtasks` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_submissions_subtasks : AFTER INSERT => ["INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`) VALUES (NEW.`ID`,@curVersion,NEW.`bSuccess`,NEW.`iScore`,NEW.`idSubtask`,NEW.`idSubmission`)"]
CREATE TRIGGER `after_insert_tm_submissions_subtasks` AFTER INSERT ON `tm_submissions_subtasks` FOR EACH ROW BEGIN INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`) VALUES (NEW.`ID`,@curVersion,NEW.`bSuccess`,NEW.`iScore`,NEW.`idSubtask`,NEW.`idSubmission`); END

tm_submissions_subtasks : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`bSuccess` <=> NEW.`bSuccess` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`idSubtask` <=> NEW.`idSubtask` AND OLD.`idSubmission` <=> NEW.`idSubmission`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`) VALUES (NEW.`ID`,@curVersion,NEW.`bSuccess`,NEW.`iScore`,NEW.`idSubtask`,NEW.`idSubmission`) ; END IF"]
CREATE TRIGGER `before_update_tm_submissions_subtasks` BEFORE UPDATE ON `tm_submissions_subtasks` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`bSuccess` <=> NEW.`bSuccess` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`idSubtask` <=> NEW.`idSubtask` AND OLD.`idSubmission` <=> NEW.`idSubmission`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`) VALUES (NEW.`ID`,@curVersion,NEW.`bSuccess`,NEW.`iScore`,NEW.`idSubtask`,NEW.`idSubmission`) ; END IF; END

tm_submissions_subtasks : AFTER UPDATE => []
tm_submissions_subtasks : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`bSuccess`,OLD.`iScore`,OLD.`idSubtask`,OLD.`idSubmission`, 1)"]
CREATE TRIGGER `before_delete_tm_submissions_subtasks` BEFORE DELETE ON `tm_submissions_subtasks` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_subtasks` (`ID`,`iVersion`,`bSuccess`,`iScore`,`idSubtask`,`idSubmission`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`bSuccess`,OLD.`iScore`,OLD.`idSubtask`,OLD.`idSubmission`, 1); END

tm_submissions_subtasks : AFTER DELETE => []
tm_submissions_tests : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_submissions_tests` BEFORE INSERT ON `tm_submissions_tests` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_submissions_tests : AFTER INSERT => ["INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`) VALUES (NEW.`ID`,@curVersion,NEW.`idSubmission`,NEW.`idTest`,NEW.`iScore`,NEW.`iTimeMs`,NEW.`iMemoryKb`,NEW.`iErrorCode`,NEW.`sOutput`,NEW.`sExpectedOutput`,NEW.`sLog`,NEW.`bNoFeedback`,NEW.`jFiles`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`idSubmissionSubtask`)"]
CREATE TRIGGER `after_insert_tm_submissions_tests` AFTER INSERT ON `tm_submissions_tests` FOR EACH ROW BEGIN INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`) VALUES (NEW.`ID`,@curVersion,NEW.`idSubmission`,NEW.`idTest`,NEW.`iScore`,NEW.`iTimeMs`,NEW.`iMemoryKb`,NEW.`iErrorCode`,NEW.`sOutput`,NEW.`sExpectedOutput`,NEW.`sLog`,NEW.`bNoFeedback`,NEW.`jFiles`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`idSubmissionSubtask`); END

tm_submissions_tests : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idSubmission` <=> NEW.`idSubmission` AND OLD.`idTest` <=> NEW.`idTest` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`iTimeMs` <=> NEW.`iTimeMs` AND OLD.`iMemoryKb` <=> NEW.`iMemoryKb` AND OLD.`iErrorCode` <=> NEW.`iErrorCode` AND OLD.`sOutput` <=> NEW.`sOutput` AND OLD.`sExpectedOutput` <=> NEW.`sExpectedOutput` AND OLD.`sLog` <=> NEW.`sLog` AND OLD.`bNoFeedback` <=> NEW.`bNoFeedback` AND OLD.`jFiles` <=> NEW.`jFiles` AND OLD.`sErrorMsg` <=> NEW.`sErrorMsg` AND OLD.`sMetadata` <=> NEW.`sMetadata` AND OLD.`idSubmissionSubtask` <=> NEW.`idSubmissionSubtask`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`) VALUES (NEW.`ID`,@curVersion,NEW.`idSubmission`,NEW.`idTest`,NEW.`iScore`,NEW.`iTimeMs`,NEW.`iMemoryKb`,NEW.`iErrorCode`,NEW.`sOutput`,NEW.`sExpectedOutput`,NEW.`sLog`,NEW.`bNoFeedback`,NEW.`jFiles`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`idSubmissionSubtask`) ; END IF"]
CREATE TRIGGER `before_update_tm_submissions_tests` BEFORE UPDATE ON `tm_submissions_tests` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idSubmission` <=> NEW.`idSubmission` AND OLD.`idTest` <=> NEW.`idTest` AND OLD.`iScore` <=> NEW.`iScore` AND OLD.`iTimeMs` <=> NEW.`iTimeMs` AND OLD.`iMemoryKb` <=> NEW.`iMemoryKb` AND OLD.`iErrorCode` <=> NEW.`iErrorCode` AND OLD.`sOutput` <=> NEW.`sOutput` AND OLD.`sExpectedOutput` <=> NEW.`sExpectedOutput` AND OLD.`sLog` <=> NEW.`sLog` AND OLD.`bNoFeedback` <=> NEW.`bNoFeedback` AND OLD.`jFiles` <=> NEW.`jFiles` AND OLD.`sErrorMsg` <=> NEW.`sErrorMsg` AND OLD.`sMetadata` <=> NEW.`sMetadata` AND OLD.`idSubmissionSubtask` <=> NEW.`idSubmissionSubtask`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_submissions_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`) VALUES (NEW.`ID`,@curVersion,NEW.`idSubmission`,NEW.`idTest`,NEW.`iScore`,NEW.`iTimeMs`,NEW.`iMemoryKb`,NEW.`iErrorCode`,NEW.`sOutput`,NEW.`sExpectedOutput`,NEW.`sLog`,NEW.`bNoFeedback`,NEW.`jFiles`,NEW.`sErrorMsg`,NEW.`sMetadata`,NEW.`idSubmissionSubtask`) ; END IF; END

tm_submissions_tests : AFTER UPDATE => []
tm_submissions_tests : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idSubmission`,OLD.`idTest`,OLD.`iScore`,OLD.`iTimeMs`,OLD.`iMemoryKb`,OLD.`iErrorCode`,OLD.`sOutput`,OLD.`sExpectedOutput`,OLD.`sLog`,OLD.`bNoFeedback`,OLD.`jFiles`,OLD.`sErrorMsg`,OLD.`sMetadata`,OLD.`idSubmissionSubtask`, 1)"]
CREATE TRIGGER `before_delete_tm_submissions_tests` BEFORE DELETE ON `tm_submissions_tests` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_submissions_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_submissions_tests` (`ID`,`iVersion`,`idSubmission`,`idTest`,`iScore`,`iTimeMs`,`iMemoryKb`,`iErrorCode`,`sOutput`,`sExpectedOutput`,`sLog`,`bNoFeedback`,`jFiles`,`sErrorMsg`,`sMetadata`,`idSubmissionSubtask`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idSubmission`,OLD.`idTest`,OLD.`iScore`,OLD.`iTimeMs`,OLD.`iMemoryKb`,OLD.`iErrorCode`,OLD.`sOutput`,OLD.`sExpectedOutput`,OLD.`sLog`,OLD.`bNoFeedback`,OLD.`jFiles`,OLD.`sErrorMsg`,OLD.`sMetadata`,OLD.`idSubmissionSubtask`, 1); END

tm_submissions_tests : AFTER DELETE => []
tm_tasks : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_tasks` BEFORE INSERT ON `tm_tasks` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_tasks : AFTER INSERT => ["INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`) VALUES (NEW.`ID`,@curVersion,NEW.`sScriptAnimation`,NEW.`sTextId`,NEW.`sSupportedLangProg`,NEW.`sEvalTags`,NEW.`bShowLimits`,NEW.`bEditorInStatement`,NEW.`bUserTests`,NEW.`bUseLatex`,NEW.`iTestsMinSuccessScore`,NEW.`bIsEvaluable`,NEW.`sEvalResultOutputScript`,NEW.`sTaskPath`,NEW.`sRevision`,NEW.`sAssetsBaseUrl`,NEW.`sDefaultEditorMode`,NEW.`bTestMode`,NEW.`bHasSubtasks`)"]
CREATE TRIGGER `after_insert_tm_tasks` AFTER INSERT ON `tm_tasks` FOR EACH ROW BEGIN INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`) VALUES (NEW.`ID`,@curVersion,NEW.`sScriptAnimation`,NEW.`sTextId`,NEW.`sSupportedLangProg`,NEW.`sEvalTags`,NEW.`bShowLimits`,NEW.`bEditorInStatement`,NEW.`bUserTests`,NEW.`bUseLatex`,NEW.`iTestsMinSuccessScore`,NEW.`bIsEvaluable`,NEW.`sEvalResultOutputScript`,NEW.`sTaskPath`,NEW.`sRevision`,NEW.`sAssetsBaseUrl`,NEW.`sDefaultEditorMode`,NEW.`bTestMode`,NEW.`bHasSubtasks`); END

tm_tasks : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`sScriptAnimation` <=> NEW.`sScriptAnimation` AND OLD.`sTextId` <=> NEW.`sTextId` AND OLD.`sSupportedLangProg` <=> NEW.`sSupportedLangProg` AND OLD.`sEvalTags` <=> NEW.`sEvalTags` AND OLD.`bShowLimits` <=> NEW.`bShowLimits` AND OLD.`bEditorInStatement` <=> NEW.`bEditorInStatement` AND OLD.`bUserTests` <=> NEW.`bUserTests` AND OLD.`bUseLatex` <=> NEW.`bUseLatex` AND OLD.`iTestsMinSuccessScore` <=> NEW.`iTestsMinSuccessScore` AND OLD.`bIsEvaluable` <=> NEW.`bIsEvaluable` AND OLD.`sEvalResultOutputScript` <=> NEW.`sEvalResultOutputScript` AND OLD.`sTaskPath` <=> NEW.`sTaskPath` AND OLD.`sRevision` <=> NEW.`sRevision` AND OLD.`sAssetsBaseUrl` <=> NEW.`sAssetsBaseUrl` AND OLD.`sDefaultEditorMode` <=> NEW.`sDefaultEditorMode` AND OLD.`bTestMode` <=> NEW.`bTestMode` AND OLD.`bHasSubtasks` <=> NEW.`bHasSubtasks`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`) VALUES (NEW.`ID`,@curVersion,NEW.`sScriptAnimation`,NEW.`sTextId`,NEW.`sSupportedLangProg`,NEW.`sEvalTags`,NEW.`bShowLimits`,NEW.`bEditorInStatement`,NEW.`bUserTests`,NEW.`bUseLatex`,NEW.`iTestsMinSuccessScore`,NEW.`bIsEvaluable`,NEW.`sEvalResultOutputScript`,NEW.`sTaskPath`,NEW.`sRevision`,NEW.`sAssetsBaseUrl`,NEW.`sDefaultEditorMode`,NEW.`bTestMode`,NEW.`bHasSubtasks`) ; END IF"]
CREATE TRIGGER `before_update_tm_tasks` BEFORE UPDATE ON `tm_tasks` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`sScriptAnimation` <=> NEW.`sScriptAnimation` AND OLD.`sTextId` <=> NEW.`sTextId` AND OLD.`sSupportedLangProg` <=> NEW.`sSupportedLangProg` AND OLD.`sEvalTags` <=> NEW.`sEvalTags` AND OLD.`bShowLimits` <=> NEW.`bShowLimits` AND OLD.`bEditorInStatement` <=> NEW.`bEditorInStatement` AND OLD.`bUserTests` <=> NEW.`bUserTests` AND OLD.`bUseLatex` <=> NEW.`bUseLatex` AND OLD.`iTestsMinSuccessScore` <=> NEW.`iTestsMinSuccessScore` AND OLD.`bIsEvaluable` <=> NEW.`bIsEvaluable` AND OLD.`sEvalResultOutputScript` <=> NEW.`sEvalResultOutputScript` AND OLD.`sTaskPath` <=> NEW.`sTaskPath` AND OLD.`sRevision` <=> NEW.`sRevision` AND OLD.`sAssetsBaseUrl` <=> NEW.`sAssetsBaseUrl` AND OLD.`sDefaultEditorMode` <=> NEW.`sDefaultEditorMode` AND OLD.`bTestMode` <=> NEW.`bTestMode` AND OLD.`bHasSubtasks` <=> NEW.`bHasSubtasks`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`) VALUES (NEW.`ID`,@curVersion,NEW.`sScriptAnimation`,NEW.`sTextId`,NEW.`sSupportedLangProg`,NEW.`sEvalTags`,NEW.`bShowLimits`,NEW.`bEditorInStatement`,NEW.`bUserTests`,NEW.`bUseLatex`,NEW.`iTestsMinSuccessScore`,NEW.`bIsEvaluable`,NEW.`sEvalResultOutputScript`,NEW.`sTaskPath`,NEW.`sRevision`,NEW.`sAssetsBaseUrl`,NEW.`sDefaultEditorMode`,NEW.`bTestMode`,NEW.`bHasSubtasks`) ; END IF; END

tm_tasks : AFTER UPDATE => []
tm_tasks : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`sScriptAnimation`,OLD.`sTextId`,OLD.`sSupportedLangProg`,OLD.`sEvalTags`,OLD.`bShowLimits`,OLD.`bEditorInStatement`,OLD.`bUserTests`,OLD.`bUseLatex`,OLD.`iTestsMinSuccessScore`,OLD.`bIsEvaluable`,OLD.`sEvalResultOutputScript`,OLD.`sTaskPath`,OLD.`sRevision`,OLD.`sAssetsBaseUrl`,OLD.`sDefaultEditorMode`,OLD.`bTestMode`,OLD.`bHasSubtasks`, 1)"]
CREATE TRIGGER `before_delete_tm_tasks` BEFORE DELETE ON `tm_tasks` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks` (`ID`,`iVersion`,`sScriptAnimation`,`sTextId`,`sSupportedLangProg`,`sEvalTags`,`bShowLimits`,`bEditorInStatement`,`bUserTests`,`bUseLatex`,`iTestsMinSuccessScore`,`bIsEvaluable`,`sEvalResultOutputScript`,`sTaskPath`,`sRevision`,`sAssetsBaseUrl`,`sDefaultEditorMode`,`bTestMode`,`bHasSubtasks`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`sScriptAnimation`,OLD.`sTextId`,OLD.`sSupportedLangProg`,OLD.`sEvalTags`,OLD.`bShowLimits`,OLD.`bEditorInStatement`,OLD.`bUserTests`,OLD.`bUseLatex`,OLD.`iTestsMinSuccessScore`,OLD.`bIsEvaluable`,OLD.`sEvalResultOutputScript`,OLD.`sTaskPath`,OLD.`sRevision`,OLD.`sAssetsBaseUrl`,OLD.`sDefaultEditorMode`,OLD.`bTestMode`,OLD.`bHasSubtasks`, 1); END

tm_tasks : AFTER DELETE => []
tm_tasks_limits : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_tasks_limits` BEFORE INSERT ON `tm_tasks_limits` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_tasks_limits : AFTER INSERT => ["INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLangProg`,NEW.`iMaxTime`,NEW.`iMaxMemory`)"]
CREATE TRIGGER `after_insert_tm_tasks_limits` AFTER INSERT ON `tm_tasks_limits` FOR EACH ROW BEGIN INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLangProg`,NEW.`iMaxTime`,NEW.`iMaxMemory`); END

tm_tasks_limits : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`sLangProg` <=> NEW.`sLangProg` AND OLD.`iMaxTime` <=> NEW.`iMaxTime` AND OLD.`iMaxMemory` <=> NEW.`iMaxMemory`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_limits` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLangProg`,NEW.`iMaxTime`,NEW.`iMaxMemory`) ; END IF"]
CREATE TRIGGER `before_update_tm_tasks_limits` BEFORE UPDATE ON `tm_tasks_limits` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`sLangProg` <=> NEW.`sLangProg` AND OLD.`iMaxTime` <=> NEW.`iMaxTime` AND OLD.`iMaxMemory` <=> NEW.`iMaxMemory`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_limits` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLangProg`,NEW.`iMaxTime`,NEW.`iMaxMemory`) ; END IF; END

tm_tasks_limits : AFTER UPDATE => []
tm_tasks_limits : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_limits` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`sLangProg`,OLD.`iMaxTime`,OLD.`iMaxMemory`, 1)"]
CREATE TRIGGER `before_delete_tm_tasks_limits` BEFORE DELETE ON `tm_tasks_limits` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_limits` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_limits` (`ID`,`iVersion`,`idTask`,`sLangProg`,`iMaxTime`,`iMaxMemory`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`sLangProg`,OLD.`iMaxTime`,OLD.`iMaxMemory`, 1); END

tm_tasks_limits : AFTER DELETE => []
tm_tasks_strings : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_tasks_strings` BEFORE INSERT ON `tm_tasks_strings` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_tasks_strings : AFTER INSERT => ["INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLanguage`,NEW.`sTitle`,NEW.`sTranslator`,NEW.`sStatement`,NEW.`sSolution`)"]
CREATE TRIGGER `after_insert_tm_tasks_strings` AFTER INSERT ON `tm_tasks_strings` FOR EACH ROW BEGIN INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLanguage`,NEW.`sTitle`,NEW.`sTranslator`,NEW.`sStatement`,NEW.`sSolution`); END

tm_tasks_strings : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTitle` <=> NEW.`sTitle` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sStatement` <=> NEW.`sStatement` AND OLD.`sSolution` <=> NEW.`sSolution`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLanguage`,NEW.`sTitle`,NEW.`sTranslator`,NEW.`sStatement`,NEW.`sSolution`) ; END IF"]
CREATE TRIGGER `before_update_tm_tasks_strings` BEFORE UPDATE ON `tm_tasks_strings` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`sLanguage` <=> NEW.`sLanguage` AND OLD.`sTitle` <=> NEW.`sTitle` AND OLD.`sTranslator` <=> NEW.`sTranslator` AND OLD.`sStatement` <=> NEW.`sStatement` AND OLD.`sSolution` <=> NEW.`sSolution`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`sLanguage`,NEW.`sTitle`,NEW.`sTranslator`,NEW.`sStatement`,NEW.`sSolution`) ; END IF; END

tm_tasks_strings : AFTER UPDATE => []
tm_tasks_strings : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`sLanguage`,OLD.`sTitle`,OLD.`sTranslator`,OLD.`sStatement`,OLD.`sSolution`, 1)"]
CREATE TRIGGER `before_delete_tm_tasks_strings` BEFORE DELETE ON `tm_tasks_strings` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_strings` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_strings` (`ID`,`iVersion`,`idTask`,`sLanguage`,`sTitle`,`sTranslator`,`sStatement`,`sSolution`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`sLanguage`,OLD.`sTitle`,OLD.`sTranslator`,OLD.`sStatement`,OLD.`sSolution`, 1); END

tm_tasks_strings : AFTER DELETE => []
tm_tasks_subtasks : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_tasks_subtasks` BEFORE INSERT ON `tm_tasks_subtasks` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_tasks_subtasks : AFTER INSERT => ["INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`name`,NEW.`comments`,NEW.`iPointsMax`,NEW.`iRank`,NEW.`bActive`)"]
CREATE TRIGGER `after_insert_tm_tasks_subtasks` AFTER INSERT ON `tm_tasks_subtasks` FOR EACH ROW BEGIN INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`name`,NEW.`comments`,NEW.`iPointsMax`,NEW.`iRank`,NEW.`bActive`); END

tm_tasks_subtasks : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`name` <=> NEW.`name` AND OLD.`comments` <=> NEW.`comments` AND OLD.`iPointsMax` <=> NEW.`iPointsMax` AND OLD.`iRank` <=> NEW.`iRank` AND OLD.`bActive` <=> NEW.`bActive`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`name`,NEW.`comments`,NEW.`iPointsMax`,NEW.`iRank`,NEW.`bActive`) ; END IF"]
CREATE TRIGGER `before_update_tm_tasks_subtasks` BEFORE UPDATE ON `tm_tasks_subtasks` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`name` <=> NEW.`name` AND OLD.`comments` <=> NEW.`comments` AND OLD.`iPointsMax` <=> NEW.`iPointsMax` AND OLD.`iRank` <=> NEW.`iRank` AND OLD.`bActive` <=> NEW.`bActive`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`name`,NEW.`comments`,NEW.`iPointsMax`,NEW.`iRank`,NEW.`bActive`) ; END IF; END

tm_tasks_subtasks : AFTER UPDATE => []
tm_tasks_subtasks : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`name`,OLD.`comments`,OLD.`iPointsMax`,OLD.`iRank`,OLD.`bActive`, 1)"]
CREATE TRIGGER `before_delete_tm_tasks_subtasks` BEFORE DELETE ON `tm_tasks_subtasks` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_subtasks` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_subtasks` (`ID`,`iVersion`,`idTask`,`name`,`comments`,`iPointsMax`,`iRank`,`bActive`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`name`,OLD.`comments`,OLD.`iPointsMax`,OLD.`iRank`,OLD.`bActive`, 1); END

tm_tasks_subtasks : AFTER DELETE => []
tm_tasks_tests : BEFORE INSERT => ["IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ","SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion"]
CREATE TRIGGER `before_insert_tm_tasks_tests` BEFORE INSERT ON `tm_tasks_tests` FOR EACH ROW BEGIN IF (NEW.ID IS NULL OR NEW.ID = 0) THEN SET NEW.ID = FLOOR(RAND() * 1000000000) + FLOOR(RAND() * 1000000000) * 1000000000; END IF ; SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion;SET NEW.iVersion = @curVersion; END

tm_tasks_tests : AFTER INSERT => ["INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idSubtask`,NEW.`idSubmission`,NEW.`sGroupType`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sOutput`,NEW.`sInput`,NEW.`sName`,NEW.`iRank`)"]
CREATE TRIGGER `after_insert_tm_tasks_tests` AFTER INSERT ON `tm_tasks_tests` FOR EACH ROW BEGIN INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idSubtask`,NEW.`idSubmission`,NEW.`sGroupType`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sOutput`,NEW.`sInput`,NEW.`sName`,NEW.`iRank`); END

tm_tasks_tests : BEFORE UPDATE => ["IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idSubtask` <=> NEW.`idSubtask` AND OLD.`idSubmission` <=> NEW.`idSubmission` AND OLD.`sGroupType` <=> NEW.`sGroupType` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sOutput` <=> NEW.`sOutput` AND OLD.`sInput` <=> NEW.`sInput` AND OLD.`sName` <=> NEW.`sName` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idSubtask`,NEW.`idSubmission`,NEW.`sGroupType`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sOutput`,NEW.`sInput`,NEW.`sName`,NEW.`iRank`) ; END IF"]
CREATE TRIGGER `before_update_tm_tasks_tests` BEFORE UPDATE ON `tm_tasks_tests` FOR EACH ROW BEGIN IF NEW.iVersion <> OLD.iVersion THEN SET @curVersion = NEW.iVersion; ELSE SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; END IF; IF NOT (OLD.`ID` = NEW.`ID` AND OLD.`idTask` <=> NEW.`idTask` AND OLD.`idSubtask` <=> NEW.`idSubtask` AND OLD.`idSubmission` <=> NEW.`idSubmission` AND OLD.`sGroupType` <=> NEW.`sGroupType` AND OLD.`idUser` <=> NEW.`idUser` AND OLD.`idPlatform` <=> NEW.`idPlatform` AND OLD.`sOutput` <=> NEW.`sOutput` AND OLD.`sInput` <=> NEW.`sInput` AND OLD.`sName` <=> NEW.`sName` AND OLD.`iRank` <=> NEW.`iRank`) THEN SET NEW.iVersion = @curVersion; UPDATE `history_tm_tasks_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`) VALUES (NEW.`ID`,@curVersion,NEW.`idTask`,NEW.`idSubtask`,NEW.`idSubmission`,NEW.`sGroupType`,NEW.`idUser`,NEW.`idPlatform`,NEW.`sOutput`,NEW.`sInput`,NEW.`sName`,NEW.`iRank`) ; END IF; END

tm_tasks_tests : AFTER UPDATE => []
tm_tasks_tests : BEFORE DELETE => ["SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`idSubtask`,OLD.`idSubmission`,OLD.`sGroupType`,OLD.`idUser`,OLD.`idPlatform`,OLD.`sOutput`,OLD.`sInput`,OLD.`sName`,OLD.`iRank`, 1)"]
CREATE TRIGGER `before_delete_tm_tasks_tests` BEFORE DELETE ON `tm_tasks_tests` FOR EACH ROW BEGIN SELECT (UNIX_TIMESTAMP() * 10) INTO @curVersion; UPDATE `history_tm_tasks_tests` SET `iNextVersion` = @curVersion WHERE `ID` = OLD.`ID` AND `iNextVersion` IS NULL; INSERT INTO `history_tm_tasks_tests` (`ID`,`iVersion`,`idTask`,`idSubtask`,`idSubmission`,`sGroupType`,`idUser`,`idPlatform`,`sOutput`,`sInput`,`sName`,`iRank`, `bDeleted`) VALUES (OLD.`ID`,@curVersion,OLD.`idTask`,OLD.`idSubtask`,OLD.`idSubmission`,OLD.`sGroupType`,OLD.`idUser`,OLD.`idPlatform`,OLD.`sOutput`,OLD.`sInput`,OLD.`sName`,OLD.`iRank`, 1); END

tm_tasks_tests : AFTER DELETE => []