我尝试将触发器插入到第3方Windows程序的mysql表中。 在原文中它是seample表:
CREATE TABLE `data` (
`id` int(11) DEFAULT NULL,
`dt` datetime DEFAULT NULL,
`x` double DEFAULT NULL,
`y` double DEFAULT NULL,
`sent` tinyint(4) DEFAULT NULL,
KEY `fast` (`dt`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
我的目标是标记从我的php脚本插入的数据。为此,我在表格中创建了2个新字段。
`sent` tinyint(4) DEFAULT NULL,
`sourceColumn` int(11) DEFAULT NULL,
已发送 - 用于标记是否已使用数据,而sourceColumn用于标记插入原因。
有时我需要在ponts中设置send = 99,插入3Th派对windows程序。为此,我创建了触发器:
CREATE
DEFINER=`root`@`%`
TRIGGER `abc`.`data`
BEFORE INSERT ON `abc`.`data`
FOR EACH ROW
BEGIN
IF (EXISTS (select ID FROM OrigLock where id=NEW.id AND NEW.dt between date_start AND date_stop) ) THEN
SET NEW.sent=99;
END IF;
END
$$
这项工作正常,但有时候表中大约有1000个存在行,其中dt在interval date_start和date_stop之间,且sent = NULL和sourceColumn = NULL,即看起来像行插入Windows程序而没有触发器。 对数据如何进入表格有任何想法,而不处理触发器?
OrigLock结构:
enter code here
CREATE TABLE `OrigLock` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`DataID1` int(11) NOT NULL,
`DataID2` int(11) NOT NULL,
`date_start` datetime DEFAULT NULL,
`date_stop` datetime DEFAULT NULL,
PRIMARY KEY (`ID`,`DataID1`)
) ENGINE=InnoDB AUTO_INCREMENT=450 DEFAULT CHARSET=latin1