当我使用触发器时,我是触发器的新手,并且在TransactionDateTracking表上遇到一些锁定问题(插入TransactionDateTracking时出现重复输入消息)。下面是表结构
创建表TransactionDateTracking
(
Id
int(11)NOT NULL AUTO_INCREMENT,
TransactionTrackType
varchar(50)NOT NULL,
TransactionTrackDate
日期不为空,
LastRunDate
日期时间默认为空,
主键(Id
),
唯一键TransactionTrackType_UNIQUE
(TransactionTrackType
)
)ENGINE = InnoDB AUTO_INCREMENT = 645 DEFAULT CHARSET = latin1;
创建表JournalJobLog
(
TransformationId
int(11)NOT NULL AUTO_INCREMENT,
TransformationName
varchar(255)NOT NULL,
LastUpdated
时间戳为NULL,默认为NULL,
LastFailureDate
时间戳为NULL,默认为NULL,
RevisionNumber
bigint(20)默认为空,
主键(TransformationName
),
键IDX_JournalJobLog
(TransformationId
)
)ENGINE = InnoDB AUTO_INCREMENT = 302 DEFAULT CHARSET = utf8;
以下是我使用的两个触发器- 如果存在JournalJobLogInsert,则触发DROP;
DELIMITER $$
为每行在TransactionDateTracking
上插入之后创建触发器JournalJobLogInsert
开始
插入JournalJobLog
SET TransformationName = NEW.TransactionTrackType,
LastUpdated = NEW.TransactionTrackDate;
END $$
DELIMITER;
================================================ ================
如果存在JournalJobLogUpdate,则触发DROP;
DELIMITER $$
为每个行在TransactionDateTracking
更新后创建触发器JournalJobLogUpdate
开始
INSERT INTO JournalJobLog (TransformationName, LastUpdated) VALUES(NEW.TransactionTrackType, NEW.TransactionTrackDate) ON DUPLICATE KEY UPDATE
LastUpdated=NEW.TransactionTrackDate;
END $$
DELIMITER;
该问题有时无法在TransactionDateTracking中插入任何说明“重复条目”消息的条目。当我放下触发器时,效果很好。