Avant la version 8.1 de PostgreSQL™, les arguments des
fonctions de triatement de séquence étaient du type text, et non regclass. De
ce fait, les conversions précédemment décrites d'une chaîne de
caractères en valeur OID se produisaient à chaque appel. Pour des
raisons de compatibilité, cette fonctionnalité existe toujours.
En revanche, en interne, un transtypage implicite est effectué
entre text et regclass avant l'appel de la fonction.
Lorsque l'argument d'une fonction de traitement de séquence est
écrit comme une simple chaîne de caractères, il devient une
constante de type regclass. Puisqu'il
ne s'agit que d'un OID, il permet de suivre la séquence
originelle même en cas de renommage, changement de schéma... Ce
principe de « lien fort »
est en général souhaitable lors de références à la séquence dans
les vues et valeurs par défaut de colonnes. Un
« lien faible » est
généralement souhaité lorsque la référence à la séquence est
résolue à l'exécution. Ce comportement peut être obtenu en
forçant le stockage des constantes sous la forme de constantes
text plutôt que regclass :
nextval('foo'::text) foo est recherché à l'exécution
Le lien faible est le seul comportement accesiible dans les
versions de PostgreSQL™
antérieures à 8.1. Il peut donc être nécessaire de le conserver
pour maintenir la sémantique d'anciennes applications.
L'argument d'une fonction de traitement de séquence peut être une
expression ou une constante. S'il s'agit d'une expression
textuelle, le transtypage implicite implique une recherche lors à
l'exécution.