Có thể hoạt động như thế này:
-- DROP SCHEMA x CASCADE;
CREATE SCHEMA x;
CREATE TABLE x.priv_id(seq_id int primary key, id int);
INSERT INTO x.priv_id
SELECT generate_series(1,100,1), (random() * 1000)::int;
CREATE SEQUENCE x.priv_seq;
SELECT id
FROM x.priv_id
WHERE seq_id = (SELECT nextval('x.priv_seq'));
Những điểm chính:
1) Tạo bảng tra cứu với hai số
- seq_id
đang đếm từ 1 và khóa chính của bạn.
- id
là các số của bạn trong chuỗi (Tôi đã thay thế các số ngẫu nhiên ở đây).
2) Tạo một chuỗi trợ giúp.
3) Nhận các số của bạn với CHỌN như trên.
Bạn cần chọn phụ hoặc tất cả các giá trị sẽ được trả lại ngay lập tức.
Giải pháp này cung cấp cho tất cả sự bảo mật nextval ()
phải cung cấp cho đồng thời.
Tạo một chỉ mục duy nhất trên priv_id (id) nếu bạn muốn đảm bảo rằng id tùy chỉnh của mình là duy nhất.