============== DROP AGGREGATE ============== .. container:: refentry :name: SQL-DROPAGGREGATE .. container:: titlepage .. container:: refnamediv .. rubric:: DROP AGGREGATE :name: drop-aggregate DROP AGGREGATE — 移除一个聚集函数 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP AGGREGATE [ IF EXISTS ] name ( aggregate_signature ) [, ...] [ CASCADE | RESTRICT ] 这里aggregate_signature是: * | [ argmode ] [ argname ] argtype [ , ... ] | [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ] .. container:: refsect1 :name: id-1.9.3.104.5 .. rubric:: 描述 :name: 描述 ``DROP AGGREGATE``\ 移除一个现有的 聚集函数。要执行这个命令,当前用户必须是该聚集函数的拥有者。 .. container:: refsect1 :name: id-1.9.3.104.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``IF EXISTS`` 如果该聚集不存在则不要抛出一个错误,而是发出一个提示。 ``name`` 一个现有聚集函数的名称(可以是模式限定的)。 ``argmode`` 一个参数的模式:\ ``IN``\ 或\ ``VARIADIC``\ 。 如果被忽略,默认值是\ ``IN``\ 。 ``argname`` 一个参数的名称。注意\ ``DROP AGGREGATE`` 并不真正关心参数名称,因为决定聚集函数的身份时只需要参数数据类型。 ``argtype`` 该聚集函数所操作的一个输入数据类型。要引用一个零参数的聚集函数,写 ``*``\ 来替代参数说明列表。要引用一个有序集聚集函数,在直接和 聚集参数说明之间写上\ ``ORDER BY``\ 。 ``CASCADE`` 自动删除依赖于该聚集函数的对象(例如使用它的视图),然后删除所有 依赖于那些对象的对象。 ``RESTRICT`` 如果有任何对象依赖于该聚集函数,则拒绝删除它。这是默认值。 .. container:: refsect1 :name: id-1.9.3.104.7 .. rubric:: 注解 :name: 注解 `ALTER AGGREGATE `__\ 下描述了另一种引用有序集聚集的语法。 .. container:: refsect1 :name: id-1.9.3.104.8 .. rubric:: 示例 :name: 示例 要为类型\ ``integer``\ 移除聚集函数\ ``myavg``\ : .. code:: programlisting DROP AGGREGATE myavg(integer); 要移除假想集聚集函数\ ``myrank``\ ,该函数接收一个排序列的 任意列表和直接参数的一个匹配的列表: .. code:: programlisting DROP AGGREGATE myrank(VARIADIC "any" ORDER BY VARIADIC "any"); 要在一个命令中删除多个聚合函数: .. code:: programlisting DROP AGGREGATE myavg(integer), myavg(bigint); .. container:: refsect1 :name: id-1.9.3.104.9 .. rubric:: 兼容性 :name: 兼容性 在 SQL 标准中没有\ ``DROP AGGREGATE``\ 语句。 .. container:: refsect1 :name: id-1.9.3.104.10 .. rubric:: 另见 :name: 另见 `ALTER AGGREGATE `__, `CREATE AGGREGATE `__