42 lines
890 B
Go
42 lines
890 B
Go
-- 先恢复
|
||
ALTER TABLE base_sys_user
|
||
ALTER COLUMN id SET DEFAULT nextval('base_sys_user_id_seq');
|
||
|
||
DROP FUNCTION IF EXISTS next_8digit_shuffle_id() CASCADE;
|
||
|
||
-- 8位自增 → 洗牌 → 仍然8位 → 绝对不重复
|
||
CREATE OR REPLACE FUNCTION next_8digit_shuffle_id()
|
||
RETURNS bigint
|
||
LANGUAGE plpgsql
|
||
VOLATILE
|
||
AS $$
|
||
DECLARE
|
||
seq bigint;
|
||
a int;
|
||
b int;
|
||
BEGIN
|
||
seq := nextval('base_sys_user_id_seq');
|
||
|
||
-- 把 8 位数字拆开洗牌
|
||
a := (seq / 10000)::int; -- 前4位
|
||
b := (seq % 10000)::int; -- 后4位
|
||
|
||
-- 前后互换 + 简单扰乱,保证:
|
||
-- 1. 还是8位
|
||
-- 2. seq 不同 → 结果一定不同
|
||
return ((b * 9871) % 10000) * 10000
|
||
+ ((a * 1237) % 10000);
|
||
END;
|
||
$$;
|
||
|
||
-- 启用
|
||
ALTER TABLE base_sys_user
|
||
ALTER COLUMN id SET DEFAULT next_8digit_shuffle_id();
|
||
|
||
|
||
|
||
|
||
ALTER TABLE base_sys_user
|
||
ALTER COLUMN id
|
||
SET DEFAULT nextval('base_sys_user_id_seq');
|