sql >> Database >  >> RDS >> PostgreSQL

Hoe een lijst met waarden voor een postgresql-reeks op te geven?

Zou als volgt kunnen werken:

-- 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'));

Belangrijkste punten:

1) Maak een opzoektabel met twee getallen
- seq_id telt vanaf 1 en uw primaire sleutel.
- id zijn je nummers in volgorde (ik heb hier willekeurige nummers vervangen).
2) Maak een hulpreeks.
3) Krijg je nummers met een SELECT zoals hierboven.
Je hebt de subselect nodig, of alle waarden worden in één keer geretourneerd.

Deze oplossing geeft alle beveiliging nextval() te bieden heeft voor gelijktijdigheid.
Maak een unieke index op priv_id(id) als u zeker wilt weten dat uw aangepaste id's uniek zijn.



  1. Ruby, Rails:mysql2 juweeltje, gebruikt iemand dit juweeltje? Is het stabiel?

  2. pyspark mysql jdbc load Er is een fout opgetreden tijdens het aanroepen van o23.load Geen geschikt stuurprogramma

  3. Verschil tussen taal sql en taal plpgsql in PostgreSQL-functies

  4. Waarom optimaliseert MySql de TUSSEN-query niet automatisch?