PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was bedeutet %% in PL/pgSQL?

Die nur Stelle, die mir einfällt, wo ein % in Standard-Postgres verdoppelt werden würde, befindet sich innerhalb des format() Funktion, die häufig zum Erstellen einer Abfragezeichenfolge für dynamisches SQL verwendet wird. Beispiele hier auf SO vergleichen.

Das Handbuch :

Schwierig bei der Verwendung des Modulo-Operators % in einer dynamischen Anweisung!

Ich vermute, sie führen hinter den Kulissen dynamisches SQL aus, das sie für den Artikel verallgemeinert und vereinfacht haben. (Der schemaqualifizierte Name der Sequenz ist 'insta5.table_id_seq' und die Tabelle würde nicht "table" heißen.) Dabei vergaßen sie, den Modulo-Operator "unmaskieren" zu lassen.
Das ist es, was sie tatsächlich ausführen:

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