POSTGRESQL 8.4.3 - 我使用此签名创建了一个函数
创建或替换功能logcountforlasthour() RETURNS SETOF记录AS
意识到我想把它改成这个
创建或替换功能logcountforlasthour() RETURNS TABLE(ip bigint,count bigint)记录AS
但是当我在查询工具中应用该更改时,它不被接受或者被接受,没有语法错误,但函数的文本没有被更改。 即使我在编辑之间运行“DROP FUNCTION logcountforlasthour()”,旧语法也会回来
如果我编辑函数的主体,那很好,它会改变而不是签名
有什么我缺少的
感谢
答案 0 :(得分:1)
替换当前的定义 现有函数,使用CREATE OR 更换功能。 这是不可能的 更改名称或参数类型 这种方式的功能(如果你试过, 你真的会创建一个新的, 独特的功能)。另外,创建或 更换功能不会让你 更改现有的返回类型 功能。要做到这一点,你必须放弃 并重新创建该功能。 (使用时 OUT参数,表示你不能 更改任何OUT的名称或类型 参数除了掉落之外 功能。)强>
如果你放弃然后重新创建一个 功能,新功能不是 与旧的同一实体;你将会有 删除现有规则,视图, 引用旧的触发器等 功能。使用CREATE OR REPLACE 功能改变功能 定义而不破坏对象 指的是功能。也, ALTER FUNCTION可用于更改 大多数的辅助属性 现有功能。
创建该功能的用户 成为该职能的所有者。
并注意:
... PostgreSQL允许函数重载;也就是说,相同的名称可以用于几个 不同的函数,只要它们有不同的参数类型。