这是一个奇怪的问题。
源MySQL DB(MASTER)及其复制品(SLAVE)。这是一个(正如你理解它的MASTER-SLAVE)语句库复制,因为我需要触发器在SLAVE端运行。
怎么可能?
让我们再说一次:
正如我之前所说,没有触发器设置或修改自动增量字段(ID)的值。只有触发器才能使用表CHANGES。
我知道可以一起调用两个或多个触发器,并尝试一起执行INSERT,但我认为DB应该很容易解决这个问题。或者这是一个非常糟糕的数据库。
UPD:
CREATE TABLE `CHANGES` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`field1` ENUM(...) NOT NULL,
`field2` BOOL NOT NULL DEFAULT FALSE,
`field3` VARCHAR(64) NOT NULL,
`field4` VARCHAR(255) NOT NULL,
`field5` TEXT,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TRIGGER `tr_TABLE_insert` AFTER INSERT ON `TABLE`
FOR EACH ROW BEGIN
INSERT INTO `CHANGES` (`field1`, `field3`, `field4`, `field5`)
VALUES ("value1", "value3", "value4", "value5");
END
UPD 2:
我找到了一个临时且更脏的方法 - 为CHANGES添加了BEFORE INSERT触发器以手动设置ID。
有效。但我仍然无法弄清楚为什么本机AUTO_INCREMENT机制正在生成重复的ID。