Mysql重复增量数字?

时间:2009-08-06 11:30:26

标签: mysql

如何让Mysql逐步生成介于0到99999之间的数字并将其添加到记录中?此外,一旦达到99999,它将从0开始。

3 个答案:

答案 0 :(得分:1)

生成一个不断递增的数字(例如,标准的auto_increment),然后在选择数据时(或通过视图),通过mod 100000运行它:

⋮
99998  % 100000 = 99998
99999  % 100000 = 99999
100000 % 100000 = 0
100001 % 100000 = 1
⋮

您可以通过为select:

创建视图来使其透明
CREATE SQL SECURITY INVOKER VIEW whatever AS
  SELECT
    foo, bar, baz, autoid % 100000 AS autoid, taz
  FROM base_table;

不幸的是,这个视图可能无法更新,MySQL不支持INSTEAD OF触发器,所以你必须向基础表发送写入。

答案 1 :(得分:0)

你想要AUTO_INCREMENT

尽管将它重置为99999可能是个问题。我也会质疑你的要求它是这样工作的。

答案 2 :(得分:0)

如果您需要重置它,可以创建一个触发器:

create trigger auto_number before insert on `sometable`
begin
    new.autoid = coalesce((select max(autoid)+1 from sometable),0) % 1000000
end

基本上,当insert发生时,这只会将autoid列设置为下一个最大的ID。但是,它使用模数来确保数字在1,000,000处重复。