Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
CREATE OPERATOR nom ( PROCEDURE = nomfonc [, LEFTARG = typegauche ] [, RIGHTARG = typedroit ] [, COMMUTATOR = op_com ] [, NEGATOR = op_neg ] [, RESTRICT = proc_res ] [, JOIN = proc_join ] [, HASHES ] [, MERGES ] [, SORT1 = op_tri_gauche ] [, SORT2 = op_tri_droit ] [, LTCMP = op_inf ] [, GTCMP = op_sup ] )
CREATE OPERATOR définit un nouvel opérateur, nom. L'utilisateur qui définit un opérateur en devient son propriétaire. Si un nom de schéma est donné, alors l'opérateur est créé dans le schéma spécifié. Sinon, il est créé dans le schéma courant.
Le nom de l'opérateur est une séquence d'au moins NAMEDATALEN-1 (63 par défaut) caractères de la liste suivante :
+ - * / < > = ~ ! @ # % ^ & | ` ?
Il existe quelques restrictions dans le choix du nom :-- et /* ne peuvent pas apparaître n'importe où dans le nom d'un opérateur car ils sont pris pour le début d'un commentaire.
Un nom d'opérateur multicaractères ne peut pas finir avec + ou - sauf si le nom contient aussi au moins un de ces caractères :
~ ! @ # % ^ & | ` ?
Par exemple, @- est un nom d'opérateur autorisé mais *- ne l'est pas. Cette restriction permet à PostgreSQL d'analyser les commandes compatibles SQL sans nécessiter d'espaces entre les jetons.
L'opérateur != correspond à <> en entrée, donc ces deux noms sont toujours équivalents.
Au moins un de LEFTARG et RIGHTARG doit être défini. Pour les opérateurs binaires, les deux doivent être définis. Pour les opérateurs unaires droits, seul LEFTARG devrait être défini alors que pour les opérateurs unaires gauches seul RIGHTARG devrait être défini.
La procédure nomfonc doit être été précédemment définie en utilisant CREATE FUNCTION et doit accepter le bon nombre d'arguments (soit un ou deux) des types indiqués.
Les autres clauses spécifient des clauses optionnelles d'optimisation d'opérateur. Leur signification est détaillée dans Section 31.13.
Le nom de l'opérateur à définir. Voir ci-dessus pour les caractères autorisés. Le nom peut être qualifié avec le nom du schéma, par exemple CREATE OPERATOR monschema.+ (...). Sinon, l'opérateur est créé dans le schéma courant. Deux opérateurs dans le même schéma peuvent avoir le même nom s'ils opérent sur des types de données différents. Ceci est appelé le surchargement.
La fonction utilisée pour implémenter cet opérateur.
Le type de données de l'opérande gauche de l'opérateur, s'il existe. Cette option sera omise pour un opérateur unaire gauche.
Le type de données de l'opérande droit de l'opérateur, s'il existe. Cette option sera omise pour un opérateur unaire droit.
Le commutateur de cet opérateur.
La négation de cet opérateur.
La fonction d'estimation de la sélectivité restreinte pour cet opérateur.
La fonction d'estimation de la sélectivité de jointure pour cet opérateur.
Indique que cet opérateur peut supporter une jointure de découpage.
Indique que cet opérateur peut supporter une jointure d'assemblage.
Si cet opérateur peut supporter une jointure d'assemblage, l'opérateur inférieur qui trie le type de données à gauche de cet opérateur.
Si cet opérateur peut supporter une jointure d'assemblage, l'opérateur supérieur qui trie le type de données à droite de cet opérateur.
Si cet opérateur peut supporter une jointure d'assemblage, l'opérateur inférieur qui compare les types de données de cet opérateur.
Si cet opérateur peut supporter une jointure d'assemblage, l'opérateur supérieur qui compare les types de données de cet opérateur.
Pour donner un nom d'opérateur qualifié d'un schéma dans op_com ou les autres arguments optionnels, utilisez la syntaxe OPERATOR() par exemple
COMMUTATOR = OPERATOR(mon_schema.===) ,
Référez-vous à Section 31.12 pour plus d'informations.
Utilisez DROP OPERATOR pour supprimer les opérateurs définis par l'utilisateur sur une base de données. Utilisez ALTER OPERATOR pour modifier les opérateurs dans une base de données.
La commande suivante définit un nouvel opérateur, << area-equality >>, pour le type de données box :
CREATE OPERATOR === ( LEFTARG = box, RIGHTARG = box, PROCEDURE = area_equal_procedure, COMMUTATOR = ===, NEGATOR = !==, RESTRICT = area_restriction_procedure, JOIN = area_join_procedure, HASHES, SORT1 = <<<, SORT2 = <<< -- Since sort operators were given, MERGES is implied. -- LTCMP and GTCMP are assumed to be < and > respectively );
CREATE OPERATOR est une extension PostgreSQL. Il n'existe pas d'opérateurs définis par l'utilisateur dans le standard SQL.
Précédent | Sommaire | Suivant |
CREATE LANGUAGE | Niveau supérieur | CREATE OPERATOR CLASS |