27 lines
661 B
Go
27 lines
661 B
Go
select setval('base_sys_user_id_seq', 10000000, false);
|
||
|
||
|
||
-- 1. 恢复原自增,解除依赖
|
||
ALTER TABLE base_sys_user
|
||
ALTER COLUMN id SET DEFAULT nextval('base_sys_user_id_seq');
|
||
|
||
-- 2. 清理旧函数
|
||
DROP FUNCTION IF EXISTS next_8digit_rand_id() CASCADE;
|
||
|
||
-- 3. 【终极版】不重复 + 乱序 + 固定8位
|
||
CREATE OR REPLACE FUNCTION next_8digit_rand_id()
|
||
RETURNS bigint
|
||
LANGUAGE plpgsql VOLATILE
|
||
AS $$
|
||
DECLARE
|
||
seq_val bigint;
|
||
BEGIN
|
||
seq_val := nextval('base_sys_user_id_seq');
|
||
RETURN 10000000 + ((seq_val * 1103515245 + 12345) # 58329) % 90000000;
|
||
END;
|
||
$$;
|
||
|
||
-- 4. 启用
|
||
ALTER TABLE base_sys_user
|
||
ALTER COLUMN id SET DEFAULT next_8digit_rand_id();
|