PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wygenerować unikalny ciąg na rekord w tabeli w Postgresie?

Nie twierdzę, że poniższe czynności są skuteczne, ale tak właśnie robiliśmy tego rodzaju rzeczy w przeszłości.

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() może być używany jako domyślny dla kolumny w my_table . Coś takiego:

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

md5(''||now()::text||random()::text) można dostosować do smaku. Możesz rozważyć encode(...,'base64') z wyjątkiem niektórych znaków używanych w base-64, które nie są przyjazne dla adresów 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. Przechowywanie obrazów w polach bajtowych w bazie danych PostgreSQL

  2. Migracja PostgreSQL do chmury — porównanie rozwiązań Amazon, Google i Microsoft

  3. Najlepszy sposób na uzyskanie liczby wyników przed zastosowaniem LIMIT

  4. PostgreSql :tablica Json do wierszy przy użyciu łączenia bocznego

  5. Postgres:sprawdź, czy pole tablicy zawiera wartość?