1 - DROP ACCESS POLICY

从列或行中删除访问策略。

语法

DROP ACCESS POLICY ON table FOR { COLUMN column | ROWS}

参数

包含要移除的列访问策略的表的名称
包含要移除的访问策略的列的名称

特权

非超级用户:表的所有权

示例

以下这些示例展示了能够删除访问策略的各种情况。

删除列访问策略:

=> DROP ACCESS POLICY ON customer FOR COLUMN Customer_Number;

删除表的行访问策略:

=> DROP ACCESS POLICY ON customer_info FOR ROWS;

2 - DROP AGGREGATE FUNCTION

从 Vertica 编录中删除用户定义的聚合函数 (UDAnF)。

语法

DROP AGGREGATE FUNCTION [ IF EXISTS ] [[database.]schema.]function( [ arglist ] )

参数

IF EXISTS
指定当要删除的函数不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

function
指定要删除的 SQL 函数的名称。如果函数名称是架构限定的名称,会将函数从指定的架构中删除(如上所述)。
arglist
传递给函数的实参名称和数据类型的逗号分隔列表,格式如下:
{ [argname] argtype }[,...]
  • argname 选择性地指定实参名称,通常是列名称。

  • argtype 指定实参的数据类型,其中 argtype 与 Vertica 数据库类型匹配。

特权

非超级用户:所有者

要求

  • 要删除某个函数,必须指定实参类型,因为多个函数可能共用相同的名称但是具有不同的参数。

  • Vertica 不会检查依赖项,因此,如果删除其他对象(例如视图或其他 SQL 函数)所引用的 SQL 函数,Vertica 会在使用这些对象时(而非删除该函数时)返回错误。

示例

以下命令将删除 ag_avg 函数:

=> DROP AGGREGATE FUNCTION ag_avg(numeric);
DROP AGGREGATE FUNCTION

另请参阅

聚合函数 (UDAF)

3 - DROP ANALYTIC FUNCTION

从 Vertica 编录中删除用户定义的分析函数。

语法

DROP ANALYTIC FUNCTION [ IF EXISTS ] [[database.]schema.]function( [ arglist ] )

参数

IF EXISTS
指定当要删除的函数不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

function
指定要删除的 SQL 函数的名称。如果函数名称是架构限定的名称,会将函数从指定的架构中删除(如上所述)。
arglist
传递给函数的实参名称和数据类型的逗号分隔列表,格式如下:
{ [argname] argtype }[,...]
  • argname 选择性地指定实参名称,通常是列名称。

  • argtype 指定实参的数据类型,其中 argtype 与 Vertica 数据库类型匹配。

特权

非超级用户:所有者

要求

  • 要删除某个函数,必须指定实参类型,因为多个函数可能共用相同的名称但是具有不同的参数。

  • Vertica 不会检查依赖项,因此,如果删除其他对象(例如视图或其他 SQL 函数)所引用的 SQL 函数,Vertica 会在使用这些对象时(而非删除该函数时)返回错误。

示例

以下命令将删除 analytic_avg 函数:

=> DROP ANALYTIC FUNCTION analytic_avg(numeric);
DROP ANALYTIC FUNCTION

另请参阅

分析函数 (UDAnF)

4 - DROP AUTHENTICATION

删除身份验证方法。

语法

DROP AUTHENTICATION [ IF EXISTS ] auth‑method‑name [ CASCADE ]

参数

IF EXISTS
指定当要删除的身份验证方法不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
auth‑method‑name
要删除的身份验证方法的名称。
CASCADE
如果要删除的身份验证方法已授予用户,则此项为必填。在这种情况下,忽略此选项会导致删除操作失败。

特权

超级用户

示例

删除身份验证方法 md5_auth

=> DROP AUTHENTICATION md5_auth;

使用 CASCADE 删除已授予用户的身份验证方法:

=> CREATE AUTHENTICATION localpwd METHOD 'password' LOCAL;
=> GRANT AUTHENTICATION localpwd TO jsmith;
=> DROP AUTHENTICATION localpwd CASCADE;

另请参阅

5 - DROP CA BUNDLE

删除证书颁发机构 (CA) 捆绑包。

语法

DROP CA BUNDLE [ IF EXISTS ] name [,...] [ CASCADE ]

参数

IF EXISTS
当要删除的 CA 捆绑包不存在时,Vertica 不会报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
name
CA 捆绑包的名称。
CASCADE
在删除 CA 捆绑包之前删除依赖对象。

特权

CA 捆绑包的所有权

示例

请参阅管理 CA 捆绑包

另请参阅

6 - DROP CERTIFICATE

从数据库中删除 TLS 证书。

要查看现有证书,请查询 CERTIFICATES

语法

DROP CERTIFICATE [ IF EXISTS ] certificate-name [,...] [ CASCADE ]

参数

IF EXISTS
当要删除的证书不存在时,Vertica 不会报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
certificate-name
要删除的证书的名称。
CASCADE
在删除证书之前删除依赖对象(例如,TLS 配置)。

特权

非超级用户,为以下之一:

  • 证书的所有权

  • 私钥DROP 权限(当与 DROP KEY...CASCADE 一起使用时)

示例

删除 server_cert,如果存在:

=> DROP CERTIFICATE server_cert;
DROP CERTIFICATE;

删除 CA 证书及其依赖项(通常是它已签名的证书):

=> DROP CERTIFICATE ca_cert CASCADE;
DROP CERTIFICATE;

另请参阅

7 - DROP DIRECTED QUERY

从数据库中删除定向查询。如果定向查询处于活动状态,Vertica 会在移除前将其停用。

语法

DROP DIRECTED QUERY directed-query-id

参数

directed‑query‑id
标识将从数据库中删除的定向查询。若要获取定向查询的标识符,请使用 GET DIRECTED QUERY 或查询系统表 DIRECTED_QUERIES

特权

超级用户

8 - DROP FAULT GROUP

移除指定容错组及其子容错组,并会将所有节点放置在已删除容错组的父组下。

要删除所有容错组,请使用 ALTER DATABASE..DROP ALL FAULT GROUP

要将孤立的节点添加回容错组,必须使用 CREATE FAULT GROUPALTER FAULT GROUP...ADD NODE 手动将其重新分配给新的或现有容错组。

语法

DROP FAULT GROUP [ IF EXISTS ] fault‑group

参数

IF EXISTS
指定当 fault-group 不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
fault‑group
指定要删除的容错组的名称。

特权

超级用户

示例

=> DROP FAULT GROUP group2;
DROP FAULT GROUP

另请参阅

9 - DROP FILTER

从 Vertica 编录中删除用户定义的加载筛选器函数。

语法

DROP FILTER [[database.]schema.]filter()

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

filter()
指定要删除的筛选器函数。必须在函数名称上附加空的圆括号。

特权

非超级用户:

示例

以下命令将删除 Iconverter 筛选器函数:

=> drop filter Iconverter();
DROP FILTER

另请参阅

10 - DROP FUNCTION

从 Vertica 编录中删除 SQL 函数或用户定义的函数 (UDF)。

语法

DROP FUNCTION [ IF EXISTS ] [[database.]schema.]function[,...] ( [ arg‑list ] )

参数

IF EXISTS
指定当要删除的函数不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

function
要删除的 SQL 或用户定义函数 (UDF),其中 UDF 可以是以下类型之一:
arg‑list

创建此函数时为其定义的以逗号分隔的实参列表,按如下方式指定:

[arg‑name] arg‑type[,...]

其中 arg-name(可选)限定 arg-type

  • arg‑name 通常是列名称。

  • arg‑type 是 Vertica 支持的 SQL 数据类型的名称。

特权

非超级用户,为以下之一:

要求

  • 要删除某个函数,必须指定实参类型,因为多个函数可能共用相同的名称但是具有不同的参数。

  • 删除 SQL 函数时,Vertica 不会检查依赖项,因此,如果其他对象引用 SQL 函数(例如视图或其他 SQL 函数),Vertica 只会在使用这些对象时返回错误。

示例

以下命令将删除 zerowhennull 函数,该函数在 macros 架构中:

=>  DROP FUNCTION macros.zerowhennull(x INT);
DROP FUNCTION

另请参阅

11 - DROP KEY

从数据库中删除加密密钥及其证书(如果有)。

要查看现有的加密密钥,请查询 CRYPTOGRAPHIC_KEYS

语法

DROP KEY [ IF EXISTS ] key-name [,...] [ CASCADE ]

参数

IF EXISTS
当要删除的密钥不存在时,Vertica 不会报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
key-name
要删除的加密密钥的名称。
CASCADE
在删除密钥之前删除依赖对象。

特权

非超级用户,为以下之一:

  • 密钥的所有权

  • DROP 权限

示例

删除 k_ca,如果存在:

=> DROP KEY k_ca IF EXISTS;
DROP KEY;

删除 k_client 及其依赖项(与之关联的证书):

=> DROP KEY k_client CASCADE;
DROP KEY;

另请参阅

12 - DROP LIBRARY

从数据库中移除 UDx 库。从 Vertica 节点上的托管目录中删除库文件。库中用户定义的函数 (UDF) 不再可用。有关详细信息,请参阅开发用户定义的扩展 (UDx)

语法

DROP LIBRARY [ IF EXISTS ] [[database.]schema.]library [  CASCADE]

参数

IF EXISTS
仅当库存在时才执行此命令。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

要删除的库名称,与在 CREATE LIBRARY 中用于加载库的名称相同。
CASCADE
同时删除使用该库定义的所有函数。DROP LIBRARY 在以下情况下会失败:CASCADE 被省略,且有一个或多个 UDx 在使用目标库。

特权

可为以下之一:

示例

超级用户可以删除任何库:

=> DROP LIBRARY ml.MyLib CASCADE;

具有 UDXDEVELOPER 角色的用户可以删除其创建的库:

=> GRANT UDXDEVELOPER TO alice, bob;
GRANT ROLE

=> \c - alice;
You are now connected as user "alice".

-- Must enable the role before using:
=> SET ROLE UDXDEVELOPER;
SET

-- Create and use ml.mylib...

-- Drop library and dependencies:
DROP LIBRARY ml.mylib CASCADE;
DROP LIBRARY

可以向用户授予删除库的显式权限:

=> \c - alice
You are now connected as user "alice".

=> GRANT DROP ON LIBRARY ml.mylib to bob;
GRANT PRIVILEGE

=> \c - bob
You are now connected as user "bob".

=> SET ROLE UDXDEVELOPER;
SET

=> DROP LIBRARY ml.mylib cascade;
DROP LIBRARY

13 - DROP LOAD BALANCE GROUP

删除负载均衡组。

语法

DROP LOAD BALANCE GROUP [ IF EXISTS ] group_name [ CASCADE ]

参数

IF EXISTS
指定当要删除的负载均衡组不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
group_name
要删除的组的名称。
[CASCADE]
同时还会删除针对该组的所有负载均衡路由规则。如果未提供此关键字和一个或多个路由规则目标 group_name,此语句将失败并显示错误消息。

特权

超级用户

示例

以下语句演示了当负载均衡组具有依赖路由规则以及使用 CASCADE 关键字时会出现的错误:

=> DROP LOAD BALANCE GROUP group_all;
NOTICE 4927:  The RoutingRule catch_all depends on LoadBalanceGroup group_all
ROLLBACK 3128:  DROP failed due to dependencies
DETAIL:  Cannot drop LoadBalanceGroup group_all because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too

=> DROP LOAD BALANCE GROUP group_all CASCADE;
DROP LOAD BALANCE GROUP

另请参阅

14 - DROP MODEL

从 Vertica 数据库中移除一个或多个模型。

语法

DROP MODEL [ IF EXISTS ] [[database.]schema.]model[,...]

参数

IF EXISTS
指定当要删除的模型不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]架构

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

模型
要删除的模型。

特权

以下几项之一:

  • 超级用户

  • 非超级用户:模型所有者

示例

请参阅删除模型

15 - DROP NETWORK ADDRESS

从编录中删除网络地址。网络地址是节点上用于连接负载均衡策略的 IP 地址和端口的名称。

语法

DROP NETWORK ADDRESS [ IF EXISTS ] address‑name [ CASCADE ]

参数

IF EXISTS
指定当要删除的网络地址不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
address‑name
要删除的网络地址的名称。
CASCADE
从指向该网络地址的任何负载均衡组中移除该网络地址。如果未提供此关键字,且一个或多个负载均衡组包含此地址,则此语句将失败并显示错误消息。

特权

超级用户

示例

以下语句演示了当网络地址具有依赖的负载均衡组以及使用 CASCADE 关键字时会出现的错误:

=> DROP NETWORK ADDRESS node01;
NOTICE 4927:  The LoadBalanceGroup group_1 depends on NetworkInterface node01
NOTICE 4927:  The LoadBalanceGroup group_random depends on NetworkInterface node01
ROLLBACK 3128:  DROP failed due to dependencies
DETAIL:  Cannot drop NetworkInterface node01 because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too
=> DROP NETWORK ADDRESS node01 CASCADE;
DROP NETWORK ADDRESS

16 - DROP NETWORK INTERFACE

从 Vertica 中移除网络接口。使用 CASCADE 选项还可以从节点定义中移除网络接口。(有关详细信息,请参阅识别用于导入/导出的数据库或节点。)

语法

DROP NETWORK INTERFACE [ IF EXISTS ] network‑interface‑name [ CASCADE ]

参数

参数定义如下:

IF EXISTS
指定当要删除的网络接口不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
network‑interface‑name
要移除的网络接口。
CASCADE
从所有节点定义中移除网络接口。

特权

超级用户

示例

=> DROP NETWORK INTERFACE myNetwork;

17 - DROP NOTIFIER

删除通过 CREATE NOTIFIER 创建的基于推送的通知程序。

语法

DROP NOTIFIER [ IF EXISTS ] notifier‑name

参数

IF EXISTS
指定当要删除的通知程序不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
notifier‑name
通知程序的唯一标识符。

18 - DROP PARSER

从 Vertica 编录中删除用户定义的加载解析器函数。

语法

DROP PARSER[[database.]schema.]parser()

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

parser()
要删除的解析器函数的名称。必须在函数名称上附加空的圆括号。

特权

非超级用户:

示例

=> DROP PARSER BasicIntegerParser();
DROP PARSER

另请参阅

19 - DROP PROCEDURE(外部)

仅限企业模式

从 Vertica 中移除外部过程。只会移除对 Vertica 内部过程的引用。外部文件仍保留在每个数据库节点的 database/procedures 目录中。

语法

DROP PROCEDURE [ IF EXISTS ] [[database.]schema.]procedure( [ parameter‑list ] )

参数

IF EXISTS
指定当要删除的过程不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

过程
指定要删除的过程。
parameter‑list
为此过程定义的形式参数的逗号分隔列表,指定如下: [parameter‑name] parameter‑type[,...]

其中 parameter-name 选择性地限定 parameter-type

特权

非超级用户:

示例

=> DROP PROCEDURE helloplanet(arg1 varchar);

另请参阅

CREATE PROCEDURE(外部)

20 - DROP PROCEDURE(存储)

删除存储过程

语法

DROP PROCEDURE [ IF EXISTS ] [[database.]schema.]procedure( [ parameter-type-list] );

参数

IF EXISTS
指定当要删除的过程不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

过程
存储过程的名称,其中 procedure 符合标识符中描述的约定。
parameter-type-list
IN 参数类型的逗号分隔列表。

特权

非超级用户:

  • 所有者或 DROP 权限

  • 对架构的 USAGE 权限

示例

对于下列过程:

=> CREATE PROCEDURE raiseXY(IN x INT, y VARCHAR) LANGUAGE PLvSQL AS $$
BEGIN
    RAISE NOTICE 'x = %', x;
    RAISE NOTICE 'y = %', y;
    -- some processing statements
END;
$$;

CALL raiseXY(3, 'some string');
NOTICE 2005:  x = 3
NOTICE 2005:  y = some string

您可以使用以下命令进行删除:

=> DROP PROCEDURE raiseXY(INT, VARCHAR);
DROP PROCEDURE

有关 RAISE NOTICE 的详细信息,请参阅错误和诊断

另请参阅

21 - DROP PROFILE

从数据库中移除用户定义的配置文件(通过 CREATE PROFILE 创建)。不能删除 DEFAULT 配置文件。

语法

DROP PROFILE [ IF EXISTS ] profile‑name[,...] [ CASCADE ]

参数

IF EXISTS
指定当要删除的配置文件不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
profile‑name
要删除的配置文件。
CASCADE
将分配给已删除的配置文件的所有用户转移给 DEFAULT 配置文件。如果忽略此选项,且目标配置文件分配有用户,Vertica 将返回错误。

特权

超级用户

示例

=> DROP PROFILE sample_profile;

22 - DROP PROJECTION

屏蔽要从编录中删除的 投影,以便该投影不可供用户查询。

语法

DROP PROJECTION [ IF EXISTS ] { [[database.]schema.]projection[,...] } [ RESTRICT | CASCADE ]

参数

IF EXISTS
指定当要删除的投影不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

projection
指定要删除的投影:
  • 如果投影未分段,则将删除数据库群集中的所有投影副本。

  • 如果投影已分段,则将通过指定投影基本名的方式删除所有伙伴实例投影。您也可以指定具体的伙伴投影名称,但前提是如此删除该伙伴实例投影不会违反系统 K-safety

有关投影名称约定,请参阅投影命名

RESTRICT | CASCADE
指定在投影包含对象的情况下是否将其删除:
  • RESTRICT (默认值):仅在投影不包含任何对象的情况下将其删除。

  • CASCADE:即便投影包含对象,仍将其删除。

特权

非超级用户:锚表的所有者

限制

投影删除操作有以下限制:

  • 投影不能是锚表的 超投影

  • 以下情况不能删除伙伴实例投影:删除该伙伴实例投影违反系统 K-safety

  • 必须有另一个投影可用于强制执行相同主键或唯一键约束。

另请参阅

23 - DROP RESOURCE POOL

删除用户创建的资源池。分配给此池的所有内存都将返回到 GENERAL 池

语法

DROP RESOURCE POOL pool-name [ FOR subcluster-spec ]

参数

pool-name
指定要删除的资源池。
FOR subcluster‑spec
仅适用于 Eon 模式,从指定的子群集中删除此资源池,其中 subcluster-spec 为以下几项之一:
  • SUBCLUSTER subcluster-name:从已命名子群集中删除 pool‑name。您不能连接到此子群集,否则 Vertica 会返回错误。
  • CURRENT SUBCLUSTER:从连接到的子群集中删除 pool‑name

如果省略此参数,将从所有子群集中删除资源池。如果为单个子群集创建了资源池,则必须指定此参数以将资源池从该子群集中显式删除;否则,Vertica 将返回错误。

特权

超级用户

如果您尝试删除的资源池是另一个资源池的辅助池,则 Vertica 会返回一个错误。该错误会列出与您尝试删除的辅助池有关的资源池。要删除辅助资源池,首先在主要资源池上将 CASCADE TO 参数设置为 DEFAULT,然后再删除辅助池。

例如,可以删除资源池 rp2,它是 rp1 的辅助池,如下:

=> ALTER RESOURCE POOL rp1 CASCADE TO DEFAULT;
=> DROP RESOURCE POOL rp2;

传输资源请求

按照该池对比于 GENERAL 池的优先级,队列中对该池的请求将全部传输给 GENERAL 池。如果该池的优先级高于 GENERAL 池,则这些请求将放置在队列列首;否则,这些请求将放置在队列列尾。

正在使用该池的用户将收到通知,通知其改为使用 GENERAL 池:

NOTICE:  Switched the following users to the General pool: username

如果用户不具备使用 GENERAL 池的权限,DROP RESOURCE POOL 会返回错误。现有会话将传输给 GENERAL 池,而无论会话的用户是否具备使用 GENERAL 池的权限。如果正在删除的池的限制级别较 GENERAL 池高,这一会话传输过程会导致需要更多用户权限。为避免赋予用户更多特权,请按照以下步骤删除受限池:

  1. 针对所有用户调用池权限

  2. 关闭对池有权限的所有会话。

  3. 删除资源池。

示例

此示例将删除用户定义的资源池:

=> DROP RESOURCE POOL ceo_pool;

此 Eon 模式示例返回了当前子群集,然后删除了当前子群集的用户定义资源池:

=> SELECT CURRENT_SUBCLUSTER_NAME();
 CURRENT_SUBCLUSTER_NAME
-------------------------
 analytics_1
(1 row)

=> DROP RESOURCE POOL dashboard FOR CURRENT SUBCLUSTER;
DROP RESOURCE POOL

另请参阅

24 - DROP ROLE

从数据库中删除角色。

语法

DROP ROLE [ IF EXISTS ] role‑name[,...] [ CASCADE ]

参数

IF EXISTS
指定当要删除的角色不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
role‑name
要删除的角色名称
CASCADE
删除角色前先自用户或其他角色调用该角色

特权

超级用户

示例

=> DROP ROLE appadmin;
NOTICE:  User bob depends on Role appadmin
ROLLBACK:  DROP ROLE failed due to dependencies
DETAIL:  Cannot drop Role appadmin because other objects depend on it
HINT:  Use DROP ROLE ... CASCADE to remove granted roles from the dependent users/roles
=> DROP ROLE appadmin CASCADE;
DROP ROLE

另请参阅

25 - DROP ROUTING RULE

从编录中删除路由规则。

语法

DROP ROUTING RULE [ IF EXISTS ] rule‑name

参数

IF EXISTS
指定当要删除的路由规则不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
rule‑name
要删除的规则的名称。

特权

超级用户

示例

=> DROP ROUTING RULE internal_clients;
DROP ROUTING RULE

26 - DROP SCHEMA

从数据库中永久删除架构。由于 DROP SCHEMA 是一个不可逆的过程,因此在删除架构前,请务必先确认您确实想要删除该架构。使用 CASCADE 参数可删除包含一个或多个对象的架构。

语法

DROP SCHEMA [ IF EXISTS ] [database.]schema[,...] [ CASCADE | RESTRICT ]

参数

IF EXISTS
指定当要删除的架构不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]架构
要删除的数据库的名称。如果指定一个数据库,它必须是当前数据库。
CASCADE
指定删除架构及其中的所有对象,而不考虑这些对象的所有者。
RESTRICT
仅当架构为空时将其删除(默认)。

特权

非超级用户:架构所有者

限制

  • 不能删除 PUBLIC 架构。

  • 如果有用户正在访问正在删除的架构中的对象,则在该事务完成前,不会删除该架构。

  • 取消 DROP SCHEMA 语句可能导致无法预见的结果。

示例

以下示例将删除架构 S1,但前提是该架构不包含任何对象:

=> DROP SCHEMA S1;

以下示例将删除架构 S1,而无论其包含架构与否:

=> DROP SCHEMA S1 CASCADE;

27 - DROP SEQUENCE

移除指定的命名序列号生成器。

语法

DROP SEQUENCE [ IF EXISTS ] [[database.]schema.]sequence[,...]

参数

IF EXISTS
指定当要删除的序列不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

序列
要删除的序列的名称。

特权

非超级用户:序列或架构所有者

限制

  • 对于在表的默认表达式中指定的序列,在您下次尝试加载数据时,默认表达式会执行失败。Vertica 不会检查这些实例。

  • DROP SEQUENCE 不支持 CASCADE 关键字。如果序列用在列的默认表达式中,那么在从默认表达式中删除对序列的所有引用之前,不能删除该序列。

示例

以下命令将删除名为 sequential 的序列。

=> DROP SEQUENCE sequential;

另请参阅

28 - DROP SOURCE

从 Vertica 编录中删除用户定义的加载源函数。

语法

DROP SOURCE [[database.]schema.]source()

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

source()
指定要删除的源函数。必须在函数名称上附加空的圆括号。

特权

非超级用户:

示例

以下命令将删除 curl 源函数:

=> DROP SOURCE curl();
DROP SOURCE

另请参阅

29 - DROP SUBNET

从 Vertica 中移除子网。

语法

DROP SUBNET [ IF EXISTS ] subnet‑name[,...] [ CASCADE ]

参数

参数定义如下:

IF EXISTS
指定当要删除的子网不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
subnet‑name
要移除的子网。
CASCADE
从所有数据库定义中移除指定的子网。

特权

超级用户

示例

=> DROP SUBNET mySubnet;

另请参阅

识别用于导入/导出的数据库或节点

30 - DROP TABLE

移除一个或多个表及其 投影。当您运行 DROP TABLE 时,更改会自动提交。

语法

DROP TABLE [ IF EXISTS ] [ [database.]schema.]table[,...] [ CASCADE ]

参数

IF EXISTS
指定当要删除的一个或多个表不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

要删除的表。
CASCADE
指定删除目标表的所有投影。 CASCADE 可选,如果目标表只有自动投影。如果忽略此选项且任何表具有非超投影集,Vertica 将返回错误并回退整个删除操作。

此选项对外部表无效。

特权

非超级用户:

要求

  • 请勿取消正在执行的 DROP TABLE。这样会导致数据库不一致。

  • 请检查确定目标表不在使用中,无论是直接使用还是间接使用——例如,在视图中。

  • 如果删除然后恢复被某视图引用的表,新表必须具有相同的名称和列定义。

示例

请参阅 删除表

另请参阅

31 - DROP TEXT INDEX

删除用于执行文本搜索的文本索引。

语法

DROP TEXT INDEX [ IF EXISTS ] [[database.]schema.]idx‑table

参数

IF EXISTS
指定当要删除的文本索引不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

idx‑table
指定文本索引名称。当使用多个架构时,指定在 DROP TEXT INDEX 语句中包含该索引的架构。

特权

  • dbadmin

  • 表所有者

  • 对于源表的 DROP 权限

示例

=> DROP TEXT INDEX t_text_index;
DROP INDEX

另请参阅

32 - DROP TLS CONFIGURATION

删除现有的 TLS CONFIGURATION。

如果将 TLS 配置设置为配置参数,则无法删除。有关详细信息,请参阅TLS 配置

语法

DROP TLS CONFIGURATION tls_config_name

参数

tls_config_name
要删除的 TLS CONFIGURATION 对象的名称。

特权

非超级用户,为以下之一:

33 - DROP TRANSFORM FUNCTION

从 Vertica 编录中删除用户定义的转换函数 (UDTF)。

语法

DROP TRANSFORM FUNCTION [ IF EXISTS ] [[database.]schema.]function( [ arg‑list ] )

参数

IF EXISTS
指定当要删除的函数不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

function
指定要删除的转换函数。
arg‑list

创建此函数时为其定义的以逗号分隔的实参列表,按如下方式指定:

[arg‑name] arg‑type[,...]

其中 arg-name(可选)限定 arg-type

  • arg‑name 通常是列名称。

  • arg‑type 是 Vertica 支持的 SQL 数据类型的名称。

特权

以下几项之一:

示例

以下命令将删除 tokenize UDTF,该 UDTF 在 macros 架构中:

=> DROP TRANSFORM FUNCTION macros.tokenize(varchar);
DROP TRANSFORM FUNCTION

以下命令将删除 Pagerank多态函数,该函数在 online 架构中:

=> DROP TRANSFORM FUNCTION online.Pagerank();
DROP TRANSFORM FUNCTION

另请参阅

CREATE TRANSFORM FUNCTION

34 - DROP USER

从授权数据库用户列表中删除一个名称。

语法

DROP USER [ IF EXISTS ] user‑name[,...] [ CASCADE ]

参数

IF EXISTS
当要删除的用户不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
user‑name
要删除的用户的名称。
CASCADE
删除通过 user‑name 创建的所有用户定义的对象,包括架构、表和引用该表的所有视图,以及该表的投影。

特权

超级用户

示例

当用户定义的对象不存在时,DROP USER 将成功:

=> CREATE USER user2;
CREATE USER
=> DROP USER IF EXISTS user2;
DROP USER

当用户创建的对象仍然存在时,DROP USER 将失败:

=> DROP USER IF EXISTS user1;
NOTICE:  Table T_tbd1 depends on User user1
ROLLBACK:  DROP failed due to dependencies
DETAIL:  Cannot drop User user1 because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too

无论用户定义的对象是否存在,DROP USER CASCADE 均可成功。该语句会强制删除所有用户定义的对象,如架构、表及其关联投影:

=> DROP USER IF EXISTS user1 CASCADE;
DROP USER

另请参阅

35 - DROP VIEW

删除指定视图。Vertica 不会检查删除的视图的依赖项。删除视图后,引用该视图的其他视图将出现故障。

如果删除视图,并将其替换为具有相同名称和列名称的其他视图或表,则引用该名称的其他视图将使用新视图。如果更改新视图中的列数据类型,则服务器会将旧数据类型强制转换为新类型(如果可行);否则将返回错误。

语法

DROP VIEW [ IF EXISTS ] [[database.]schema.]view[,...]

参数

IF EXISTS
指定当要删除的视图不存在时不报告错误。 在 SQL 脚本中使用此子句,可避免在尝试创建不存在的对象之前删除它们时出错。
[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

视图
要删除的视图的名称。

特权

为以下几项之一

  • 视图所有者和 USAGE 权限

  • 架构所有者

示例

=> DROP VIEW myview;