sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad betyder %% i PL/pgSQL?

Den eneste sted jeg kan komme i tanke om, hvor en % ville blive fordoblet i standard Postgres er inde i format() funktion, der almindeligvis bruges til at producere en forespørgselsstreng til dynamisk SQL. Sammenlign eksempler her på SO.

Manualen :

Det er vanskeligt at bruge modulo-operatoren % i et dynamisk udsagn!

Jeg formoder, at de kører dynamisk SQL bag gardinerne - som de generaliserede og forenklede til artiklen. (Det skema-kvalificerede navn på sekvensen er 'insta5.table_id_seq' og tabellen ville ikke hedde "tabel".) I processen glemte de at "undgå" modulo-operatoren.
Det er det, de faktisk kører:

EXECUTE format($$SELECT nextval('%I') %% 1024$$, seq_name)
INTO seq_id;


  1. Regex fanger de første ord før tegn efterfølgende - orakel

  2. JProgressBar opdaterer ikke, kan ikke finde en anelse

  3. Hvorfor kan jeg ikke oprette forbindelse direkte til min MySQL RDS DB Instance? (Jeg kan kun oprette forbindelse via SSHing til en EC2)

  4. Hvordan man forbedrer forespørgselsydeevne (ved at bruge forklar kommandoresultater f.eks.)