PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Thay thế chuỗi bằng số ngẫu nhiên

Để tạo các số nhận dạng duy nhất và trông ngẫu nhiên từ một chuỗi, sử dụng mật mã có thể là một ý tưởng hay. Vì đầu ra của chúng là bijective (có một ánh xạ 1-1 giữa các giá trị đầu vào và đầu ra) - bạn sẽ không có bất kỳ va chạm nào , không giống như hàm băm. Điều đó có nghĩa là số nhận dạng của bạn không nhất thiết phải dài như hàm băm.

Hầu hết các mật mã hoạt động trên các khối 64 bit hoặc lớn hơn, nhưng PostgreSQL wiki có ví dụ về thủ tục PL / pgSQL cho một mật mã "không phải mật mã" hàm hoạt động trên (32-bit) int loại hình. Tuyên bố từ chối trách nhiệm:Bản thân tôi chưa thử sử dụng chức năng này.

Để sử dụng nó cho các khóa chính của bạn, hãy chạy lệnh gọi TẠO CHỨC NĂNG từ trang wiki, sau đó trên trống của bạn bảng làm:

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

Và thì đấy!

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. Lưu đầu ra PL / pgSQL từ PostgreSQL vào tệp CSV

  2. Cập nhật Bản ghi Hoạt động Tất cả Trường JSON

  3. Thời gian chờ của Python psycopg2

  4. Làm thế nào để sử dụng SQLAlchemy để truy cập liền mạch nhiều cơ sở dữ liệu?

  5. Lỗi khi cố gắng kết nối R với PostgreSQL bằng RODBC