如何为某一列指定唯一的自动递增值?有点像auto\ u increment,但它应该在插入时为null,并在稍后的某个点赋值。
我有一个表,可以获得常规的数据插入,还有一些工作人员可以处理这些数据并设置 processed_at
完成时的日期时间字段。现在,我希望以增量方式选择自上次调用以来已处理的新行。如果我天真的使用 where processed_at > @last_update_time
我担心可能会出现某些记录在同一秒被处理,而我遗漏了一些行的情况。
更新:我能做什么
begin;
select @max := max(foo) from table1;
update table1 set foo = @max + 1 where id = 'bar' limit 1;
commit;
如果 foo
列是否索引?
1条答案
按热度按时间bkhjykvo1#
你可以用触发器来实现。
但请记住,此触发器将在每次执行update查询时都起作用。
也可以手动执行:
创建表以存储增量值:
然后,当您要更新表时,从该表中获取最后一个值,并将值+1插入需要递增的列。