我有一个排名数据库((常规,user_id,得分,时间)。我想在mySQL中创建一个TRIGGER,它会根据得分(以及得分相等的时间)为插入的条目计算正确的序数。同样,后续序数也必须移位1以确保序数是唯一的。
最好的方法是什么?在插入后对所有数据进行排序并根据其顺序重新计算所有序数是否更有意义?如何使用触发器来做到这一点?
最佳答案
根据restrictions in strored routines上的mysql文档
存储的函数或触发器无法修改已经存在的表
被调用该语句的语句所使用(用于读取或写入)
功能或触发器。
这意味着您无法使用触发器来实现所需的功能。我会用一个存储过程
将要插入的值作为参数
开始交易
对于序号大于要插入的序号的记录,增加序号
插入记录
提交交易