2010-05-11 5 views
1

POSTGRESQL 8.4.3 - i créé une fonction avec cette signaturePostgresql - Modifier la signature de la fonction

CREATE OR REPLACE FONCTION logcountforlasthour() RETOURS SETOF AS dossier

réalisé que je voulais changer à ce

CREATE OR REPLACE FONCTION logcountforlasthour() TABLE dES DECLARATIONS (ip bigint, compter bigint) AS dossier

mais quand je demande que le changement dans l'outil de requête, il ny a pas un accepté ou plutôt il est accepté, il n'y a pas d'erreur de syntaxe, mais le texte de la fonction n'a pas été changé. même si je lance « DROP FONCTION logcountforlasthour() » entre les modifications de la vieille syntaxe revient

si je modifier le corps de la fonction, thats bien, il change, mais pas la signature

est là quelque chose que je m manquant

grâce

+0

par hasard, vérifiez-vous les changements dans la fenêtre principale de pgAdmin? essayez de droite bouton de la souris, puis sélectionnez rafraîchir –

Répondre

1

de l'PostgreSQL 8.4 manual:

Pour remplacer la définition actuelle de une fonction existante, utilisez CREATE OU REPLACE FUNCTION. Il n'est pas possible de modifier le nom ou les types d'argument d'une fonction de cette façon (si vous avez essayé, , vous créeriez en fait une nouvelle fonction distincte, ). En outre, CREATE OU REPLACE FUNCTION ne vous laissera pas changer le type de retour d'une fonction existante . Pour ce faire, vous devez supprimer et recréer la fonction. (En cas d'utilisation paramètres OUT, cela signifie que vous ne pouvez pas modifier les noms ou les types de tout OUT les paramètres, sauf en laissant tomber la fonction .)

Si vous laissez tomber et puis recréer une fonction , la nouvelle fonction n'est pas le même entité que l'ancien; vous aurez pour supprimer les règles existantes, les vues, les déclencheurs , etc. qui font référence à l'ancienne fonction . Utilisez CREER OU REMPLACER FONCTION pour changer une définition de fonction sans casser les objets qui se réfèrent à la fonction. En outre, ALTER FUNCTION peut être utilisé pour modifier la plupart des propriétés auxiliaires d'une fonction existante . L'utilisateur qui crée la fonction devient le propriétaire de la fonction.

et noter également:

... PostgreSQL permet une surcharge fonction; c'est-à-dire que le même nom peut être utilisé pour plusieurs fonctions différentes tant qu'elles ont des types d'arguments distincts.

+0

err! Oui ! Je laisse tomber la fonction entre les éditions – user250616

+0

Avec quels outils travaillez-vous (psql, pgAdmin)? –

Questions connexes