Postgresql

生成唯一的隨機字元串以用作 PostgreSQL 中新創建的行內的欄位的值

  • August 28, 2019

我有這個生成隨機字元串的語句:

SELECT string_agg (substr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ceil (random() * 62)::integer, 1), '')
FROM generate_series(1, 20);

我的問題是,如何在一個函式中實現這一點,該函式會自動將上述語句的值分配給url_prefix創建新記錄時命名的欄位(on INSERT's)?

您可以創建一個函式並將其用作列的預設值:

create function f() returns text language sql as $$
  SELECT string_agg (substr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ceil (random() * 62)::integer, 1), '')
  FROM generate_series(1, 20)
$$;

create table foo(id serial primary key, url_prefix text not null default f());

insert into foo default values;
select * from foo;
編號 | url_prefix 
-: | :-------------------
 1 | iByDaJ2h4JHi3dI3uBoy

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/246465