让我们直奔主题。我有同时将新行插入关系数据库的应用程序。在一个多对一关系的端点上,我想使用触发器跟踪子行计数以供以后使用。applicant
不幸的是,如果新数据包含对同一父行( )的引用,我会遇到死锁。如何获取更新行的并发锁?这是我的触发器:
如果存在 `incrementEntryCountTrigger` 则删除触发器; 分隔符 $$ 在每行插入商标后创建触发器`incrementEntryCountTrigger` 开始 更新申请人 SET entryCount=entryCount+1, entryCountChanged=1 WHERE申请人.id=NEW.applicant_id; 结束$$ 分隔符; 如果存在 `decrementEntryCountTrigger` 则删除触发器; 分隔符 $$ 删除每一行的商标后创建触发器`decrementEntryCountTrigger` 开始 更新申请人 SET entryCount=entryCount-1, entryCountChanged=1 WHERE申请人.id=OLD.applicant_id; 结束$$ 分隔符;
trademark
表结构
创建表`商标`( `id` int(11) NOT NULL AUTO_INCREMENT, `applicationDate` 日期时间 DEFAULT NULL, `applicationNumber` varchar(255) 默认为空, `class` varchar(255) 默认为空, `creationDate` 日期时间 DEFAULT NULL, `deleted` tinyint(4) 默认为空, `imageDownloaded` tinyint(4) 默认为空, `modified` datetime 默认为 NULL, `name` varchar(255) 默认为空, `registrationDate` 日期时间 DEFAULT NULL, `registrationNumber` varchar(255) 默认为空, `trademarkType` varchar(255) 默认为空, `applicant_id` int(11) 默认为空, `country_id` int(11) 默认为空, `service_id` int(11) 默认为 NULL, 主键(`id`), 唯一键`uniqueApplicationPerServiceContraint`(`applicationNumber`,`service_id`), KEY `FK_sv7x27shne6cro3hch7who6vr`(`applicant_id`), KEY `FK_4fuuxl1srjn7svpby7rd6j1er`(`country_id`), KEY `FK_1g62lp3kjl15f789m7netvlsk` (`service_id`), 约束 `FK_1g62lp3kjl15f789m7netvlsk` 外键 (`service_id`) 参考 `service` (`id`), 约束`FK_4fuuxl1srjn7svpby7rd6j1er`外键(`country_id`)参考`country`(`id`), 约束 `FK_sv7x27shne6cro3hch7who6vr` 外键 (`applicant_id`) 参考 `applicant` (`id`) ) 引擎=InnoDB AUTO_INCREMENT=2101 默认字符集=utf8