25 lines
608 B
Go
25 lines
608 B
Go
|
|
-- 生成 8 位随机不重复 ID 函数
|
||
|
|
CREATE OR REPLACE FUNCTION next_8digit_rand_id(seq_name regclass)
|
||
|
|
RETURNS integer AS $$
|
||
|
|
DECLARE
|
||
|
|
base_val bigint;
|
||
|
|
rand8id integer;
|
||
|
|
BEGIN
|
||
|
|
base_val := nextval(seq_name);
|
||
|
|
rand8id := (10000000 + ((base_val * 1234567 # floor(random() * 99999999))::bigint % 90000000))::integer;
|
||
|
|
RETURN rand8id;
|
||
|
|
END;
|
||
|
|
$$ LANGUAGE plpgsql VOLATILE;
|
||
|
|
|
||
|
|
-- 给 base_sys_user 绑定 8 位随机ID
|
||
|
|
ALTER TABLE base_sys_user
|
||
|
|
ALTER COLUMN id
|
||
|
|
SET DEFAULT next_8digit_rand_id('base_sys_user_id_seq');
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
ALTER TABLE base_sys_user
|
||
|
|
ALTER COLUMN id
|
||
|
|
SET DEFAULT nextval('base_sys_user_id_seq');
|