使用触发器更新同一个表中的另一行
问题:
维护记录时间段重叠的情况通常需要在插入起始日期与现有范围重叠的新记录时更新先前记录的结束日期。
原始尝试:
提供的触发器尝试使用值 ADDDATE(NEW.startDate, -1) 更新现有行的 endDate,其中 procKey 与新行匹配且 endDate 为 20501231。但是,此方法会导致错误“无法更新表“拆分”在存储函数/触发器中,因为它已被调用此存储函数/触发器的语句使用。”
解决方案:
不幸的是,触发器不能直接更新与触发触发器的行相同的表中的其他行。相反,需要另一种方法。
使用存储过程:
创建一个封装以下逻辑的存储过程:
此方法允许在单个事务中更新同一个表中的多行,从而避免触发器可能会产生冲突。
以上是如何使用触发器更新同一个表中的行:重叠时间段的解决方案?的详细内容。更多信息请关注PHP中文网其他相关文章!