mysql触发器工作并不总是如此

时间:2014-01-14 08:33:53

标签: mysql triggers

我尝试将触发器插入到第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

0 个答案:

没有答案