mySQL INSERT 的自动序号
Automatic ordinal for mySQL INSERT
我有一个排名数据库(序号,user_id,得分,时间)。我想在 mySQL 中创建一个 TRIGGER,它根据分数(和分数相等的时间)为插入的条目计算正确的序号。此外,后续序数必须移动 1 以确保序数是唯一的。
最好的方法是什么?在插入后对所有数据进行排序并根据顺序重新计算所有序数是否更有意义?我怎样才能使用触发器做到这一点?
根据 mysql 关于 restrictions in strored routines
的文档
A stored function or trigger cannot modify a table that is already
being used (for reading or writing) by the statement that invoked the
function or trigger.
这意味着您不能使用触发器来实现您想要的。我会使用一个存储过程,
- 将要插入的值作为参数
- 开始交易
- 将序号大于要插入的记录的序号增加 1
- 插入记录
- 提交交易
我有一个排名数据库(序号,user_id,得分,时间)。我想在 mySQL 中创建一个 TRIGGER,它根据分数(和分数相等的时间)为插入的条目计算正确的序号。此外,后续序数必须移动 1 以确保序数是唯一的。 最好的方法是什么?在插入后对所有数据进行排序并根据顺序重新计算所有序数是否更有意义?我怎样才能使用触发器做到这一点?
根据 mysql 关于 restrictions in strored routines
的文档A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.
这意味着您不能使用触发器来实现您想要的。我会使用一个存储过程,
- 将要插入的值作为参数
- 开始交易
- 将序号大于要插入的记录的序号增加 1
- 插入记录
- 提交交易