我是触发器的新手,当我使用触发器时,我在 TransactionDateTracking 表上遇到了一些锁定问题(在 TransactionDateTracking 中插入时出现重复的条目消息)。以下是表结构
CREATE TABLE TransactionDateTracking(
Idint(11) NOT NULL AUTO_INCREMENT,
TransactionTrackTypevarchar(50) NOT NULL,
TransactionTrackDatedate NOT NULL,
LastRunDatedatetime DEFAULT NULL, PRIMARY KEY ( Id), UNIQUE KEY TransactionTrackType_UNIQUE( TransactionTrackType) ) ENGINE=InnoDB AUTO_INCREMENT=645 DEFAULT CHARSET=latin1;
CREATE TABLE JournalJobLog(
TransformationIdint(11) NOT NULL AUTO_INCREMENT,
TransformationNamevarchar(255) NOT NULL,
LastUpdatedtimestamp NULL DEFAULT NULL,
LastFailureDatetimestamp NULL DEFAULT NULL,
RevisionNumberbigint(20) DEFAULT NULL, PRIMARY KEY ( TransformationName), KEY IDX_JournalJobLog( TransformationId) ) ENGINE=InnoDB AUTO_INCREMENT=302默认字符集=utf8;
以下是我使用的两个触发器 - DROP TRIGGER IF EXISTS JournalJobLogInsert;
分隔符 $$
CREATE TRIGGER JournalJobLogInsert AFTER ON INSERT ON TransactionDateTrackingFOR EACH BEGIN INSERT INTO JournalJobLog SET TransformationName=NEW.TransactionTrackType, LastUpdated=NEW.TransactionTrackDate; 结束$$
分隔符;
==================================================== ==============
如果存在则删除触发器 JournalJobLogUpdate;
分隔符 $$
TransactionDateTracking在每行开始更新后创建触发器 JournalJobLogUpdate
INSERT INTO JournalJobLog (TransformationName, LastUpdated) VALUES(NEW.TransactionTrackType, NEW.TransactionTrackDate) ON DUPLICATE KEY UPDATE
LastUpdated=NEW.TransactionTrackDate;
结束$$
分隔符;
问题是有时无法在 TransactionDateTracking 中插入任何条目,说明“重复条目”消息。当我放下触发器时,它工作正常。