Postgresql
生成唯一的隨機字元串以用作 PostgreSQL 中新創建的行內的欄位的值
我有這個生成隨機字元串的語句:
SELECT string_agg (substr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ceil (random() * 62)::integer, 1), '') FROM generate_series(1, 20);
我的問題是,如何在一個函式中實現這一點,該函式會自動將上述語句的值分配給
url_prefix
創建新記錄時命名的欄位(onINSERT'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<>在這裡擺弄