PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana saya bisa menghasilkan string unik per catatan dalam tabel di Postgres?

Saya tidak mengklaim bahwa yang berikut ini efisien, tetapi itulah cara kami melakukan hal semacam ini di masa lalu.

CREATE FUNCTION make_uid() RETURNS text AS $$
DECLARE
    new_uid text;
    done bool;
BEGIN
    done := false;
    WHILE NOT done LOOP
        new_uid := md5(''||now()::text||random()::text);
        done := NOT exists(SELECT 1 FROM my_table WHERE uid=new_uid);
    END LOOP;
    RETURN new_uid;
END;
$$ LANGUAGE PLPGSQL VOLATILE;

make_uid() dapat digunakan sebagai default untuk kolom di my_table . Sesuatu seperti:

ALTER TABLE my_table ADD COLUMN uid text NOT NULL DEFAULT make_uid();

md5(''||now()::text||random()::text) bisa disesuaikan selera. Anda dapat mempertimbangkan encode(...,'base64') kecuali beberapa karakter yang digunakan di base-64 tidak ramah URL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melemparkan array json ke array teks?

  2. SQL Dapatkan semua catatan yang lebih lama dari 30 hari

  3. Nonaktifkan pemeriksaan kunci asing PostgreSQL untuk migrasi

  4. psycopg2 membocorkan memori setelah permintaan besar

  5. Tipe data apa untuk garis lintang dan garis bujur?