기본값 임의 문자열을 사용하여 DB에서 열을 만드는 방법


답변:


11

PostgreSQL 예제 :

CREATE OR REPLACE FUNCTION f_random_text(
    length integer
)
RETURNS text AS
$body$
WITH chars AS (
    SELECT unnest(string_to_array('A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9', ' ')) AS _char
),
charlist AS
(
    SELECT _char FROM chars ORDER BY random() LIMIT $1
)
SELECT string_agg(_char, '')
FROM charlist
;
$body$
LANGUAGE sql;


DROP TABLE IF EXISTS tmp_test;


CREATE TEMPORARY TABLE tmp_test (
    id serial,
    data text default f_random_text(12)
);


INSERT INTO tmp_test
VALUES 
    (DEFAULT, DEFAULT),
    (DEFAULT, DEFAULT)
;


SELECT * FROM tmp_test;

 id |     data
----+--------------
  1 | RYMUJH4E0NIQ
  2 | 7U4029BOKAEJ
(2 rows)

분명히 당신은 이것을 할 수 있습니다. (물론, 당신은뿐만 아니라 다른 문자를 추가 할 수 있습니다, 또는 다른 임의의 문자열 생성기를 사용 - 같은 . 예를 들어)


1
SELECT md5 (random () :: text); -그렇습니다, 감사합니다!
tasmaniski 2016 년

17

해결책은 (PGSQL의 경우)입니다.

alter TABLE users ADD column register_key text NOT NULL default md5(random()::text);

1
이것은 아름다운 트릭입니다!
cjauvin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.