如何让Mysql逐步生成介于0到99999之间的数字并将其添加到记录中?此外,一旦达到99999,它将从0开始。
答案 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处重复。