我是触发器的新手,当我使用触发器时,我在 TransactionDateTracking 表上遇到了一些锁定问题(在 TransactionDateTracking 中插入时出现重复的条目消息)。以下是表结构
CREATE TABLE TransactionDateTracking
(
Id
int(11) NOT NULL AUTO_INCREMENT,
TransactionTrackType
varchar(50) NOT NULL,
TransactionTrackDate
date NOT NULL,
LastRunDate
datetime DEFAULT NULL, PRIMARY KEY ( Id
), UNIQUE KEY TransactionTrackType_UNIQUE
( TransactionTrackType
) ) ENGINE=InnoDB AUTO_INCREMENT=645 DEFAULT CHARSET=latin1;
CREATE TABLE JournalJobLog
(
TransformationId
int(11) NOT NULL AUTO_INCREMENT,
TransformationName
varchar(255) NOT NULL,
LastUpdated
timestamp NULL DEFAULT NULL,
LastFailureDate
timestamp NULL DEFAULT NULL,
RevisionNumber
bigint(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 TransactionDateTracking
FOR 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 中插入任何条目,说明“重复条目”消息。当我放下触发器时,它工作正常。