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 在使用目标库。
特权
可为以下之一:
-
超级用户
-
UDXDEVELOPER 和库所有者(通过 CREATE LIBRARY 创建库的用户)
-
UDXDEVELOPER 和对库的 DROP 权限(请参阅 GRANT(库))
示例
超级用户可以删除任何库:
=> 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