sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad betyder %% i PL/pgSQL?

Den enda plats jag kan tänka mig, där en % skulle fördubblas i standard Postgres är i format() funktion, som vanligtvis används för att skapa en frågesträng för dynamisk SQL. Jämför exempel här på SO.

Handboken :

Knepigt när du använder modulo-operatorn % i ett dynamiskt uttalande!

Jag misstänker att de kör dynamisk SQL bakom gardinerna - vilket de generaliserade och förenklade för artikeln. (Det schemakvalificerade namnet på sekvensen är 'insta5.table_id_seq' och tabellen skulle inte heta "tabell".) I processen glömde de att "unscape" modulo-operatorn.
Det är vad de faktiskt kör:

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


  1. MySQL Ogiltigt standardvärde för tidsstämpel när inget standardvärde anges.

  2. Kan jag lägga till en UNIK begränsning till en PostgreSQL-tabell efter att den redan har skapats?

  3. Hur man lägger till total rad i MySQL

  4. lista alla tabeller i en databas med MySQLi