0

我是触发器的新手,当我使用触发器时,我在 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 中插入任何条目,说明“重复条目”消息。当我放下触发器时,它工作正常。

4

0 回答 0