วิธีสร้างคอลัมน์ในฐานข้อมูลด้วยสตริงสุ่มค่าเริ่มต้น


10

ฉันสามารถสร้างคอลัมน์ในตาราง DB (PostgreSQL) ซึ่งมีค่าเริ่มต้นสตริงแบบสุ่มได้อย่างไร

หากเป็นไปไม่ได้โปรดแจ้งให้เราทราบ


โปรดถาม MySQL อีกครั้งหากคุณต้องการคำตอบสำหรับ RDBMS นั้นด้วย
แจ็คบอกว่าลอง topanswers.xyz

โซลูชัน UUID: stackoverflow.com/a/21684011/242933
ma11hew28

คำตอบ:


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

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.