diff --git a/help/修改自增id.sql b/help/修改自增id.sql index 1890b7c0..76150767 100644 --- a/help/修改自增id.sql +++ b/help/修改自增id.sql @@ -1 +1,26 @@ -select setval('base_sys_user_id_seq', 10000000, false); \ No newline at end of file +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();