Cách tạo cột trong DB với chuỗi ngẫu nhiên giá trị mặc định


10

Tôi có thể tạo cột trong bảng DB (PostgreSQL) có chuỗi ngẫu nhiên giá trị mặc định không và bằng cách nào?

Nếu không thể, xin vui lòng cho tôi biết điều đó.


vui lòng hỏi lại MySQL nếu bạn cũng cần câu trả lời cho RDBMS đó
Jack nói hãy thử topanswers.xyz

Câu trả lời:


11

Ví dụ 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)

Rõ ràng bạn có thể làm điều này. (Tất nhiên, bạn cũng có thể thêm các ký tự khác hoặc sử dụng trình tạo chuỗi ngẫu nhiên khác - ví dụ như thế này .)


1
CHỌN md5 (ngẫu nhiên () :: văn bản); - Thế thôi, cảm ơn!
tasmaniski

17

Giải pháp là (đối với PGQuery):

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

1
Đây là một mẹo hay!
cjauvin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.