PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Замяна на последователност със случайно число

За генериране на уникални и произволно изглеждащи идентификатори от сериал, използването на шифри може да е добра идея. Тъй като техният изход е биективен (има съпоставяне едно към едно между входни и изходни стойности) -- вие няма да имате никакви сблъсъци , за разлика от хешовете. Което означава, че вашите идентификатори не трябва да са толкова дълги, колкото хешовете.

Повечето криптографски шифри работят върху 64-битови или по-големи блокове, но PostgreSQL wiki има примерна PL/pgSQL процедура за "некриптографски" шифър функция, която работи на (32-битов) int Тип. Отказ от отговорност:Не съм опитвал да използвам тази функция лично.

За да го използвате за вашите първични ключове, изпълнете извикването CREATE FUNCTION от wiki страницата и след това на вашия празен таблиците правят:

ALTER TABLE foo ALTER COLUMN foo_id SET DEFAULT pseudo_encrypt(nextval('foo_foo_id_seq')::int);

И готово!

pg=> insert into foo (foo_id) values(default);
pg=> insert into foo (foo_id) values(default);
pg=> insert into foo (foo_id) values(default);
pg=> select * from foo;
  foo_id   
------------
 1241588087
 1500453386
 1755259484
(4 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте PostgreSQL база данни в движение, като използвате Hibernate, дори ако DB не съществува

  2. Референтна стойност на серийната колона в друга колона по време на същото INSERT

  3. Намаляване на параметъра postgresql.conf наведнъж

  4. Как да внедрим PostgresQL tsvector за търсене в пълен текст с помощта на Sequelize?

  5. Как мога да настроя пътя за приложението heroku postgresql?