【问题标题】:Postgresql - Edit function signaturePostgresql - 编辑函数签名
【发布时间】:2010-05-11 13:46:57
【问题描述】:

POSTGRESQL 8.4.3 - 我用这个签名创建了一个函数

创建或替换函数 logcountforlasthour() 返回 SETOF 记录作为

意识到我想把它改成这个

创建或替换函数 logcountforlasthour() RETURNS TABLE(ip bigint, count bigint) 记录 AS

但是当我在查询工具中应用该更改时,它不被接受或者被接受,没有语法错误,但函数的文本没有改变。 即使我在编辑之间运行“DROP FUNCTION logcountforlasthour()”,旧语法也会恢复

如果我编辑函数的主体,那很好,它会改变但不会改变签名

我有什么遗漏

谢谢

【问题讨论】:

  • 您是否正在检查 pgAdmin 主窗口中的更改?尝试鼠标右键该功能,然后选择刷新

标签: postgresql stored-procedures function


【解决方案1】:

来自PostgreSQL 8.4 manual

替换当前的定义 现有函数,使用 CREATE OR 更换功能。 这是不可能的 更改名称或参数类型 这样的函数(如果你尝试过, 你实际上会创造一个新的, 不同的功能)。此外,创建或 REPLACE FUNCTION不会让你 更改现有的返回类型 功能。为此,您必须放弃 并重新创建功能。 (使用时 OUT 参数,这意味着你不能 更改任何 OUT 的名称或类型 参数,除非通过删除 功能。)

如果你删除然后重新创建一个 功能,新功能不是 与旧实体相同;你将会有 删除现有规则、视图、 引用旧的触发器等 功能。使用创建或替换 FUNCTION 更改功能 不破坏对象的定义 指的是功能。还, ALTER FUNCTION 可以用来改变 大部分辅助属性 现有功能。

创建函数的用户 成为函数的所有者。

还要注意:

... PostgreSQL 允许函数重载;也就是说,同一个名字可以用于多个 不同的函数,只要它们具有不同的参数类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多