

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# DROP VIEW
<a name="r_DROP_VIEW"></a>

从数据库中删除视图。可以使用一条 DROP VIEW 命令删除多个视图。此命令无法撤消。

## 所需的权限
<a name="r_DROP_VIEW-privileges"></a>

以下是 DROP VIEW 所需的权限：
+ Superuser
+ 具有 DROP VIEW 权限的用户
+ 视图拥有者

## 语法
<a name="r_DROP_VIEW-synopsis"></a>

```
DROP VIEW [ IF EXISTS ] name [, ... ] [ CASCADE | RESTRICT ] 
```

## 参数
<a name="r_DROP_VIEW-parameters"></a>

IF EXISTS  
一个子句，指示如果指定的视图不存在，则命令不应进行任何更改，并返回一条指示视图不存在的消息，而不是以错误终止。  
此子句在编写脚本时很有用，可使在 DROP VIEW 针对不存在的视图运行时脚本不会失败。

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

CASCADE  
一个子句，用于指示自动删除依赖该视图的对象，例如其他视图。  
要使创建的视图不依赖于其他数据库对象（例如视图和表），请在定义视图时包括 WITH NO SCHEMA BINDING 子句。有关更多信息，请参阅 [CREATE VIEW](r_CREATE_VIEW.md)。  
请注意，如果您包含 CASCADE 参数并且删除的数据库对象数不少于十个，则数据库客户端可能不会在摘要结果中列出所有已删除的对象。这通常是因为 SQL 客户端工具对返回的结果数有默认限制。

RESTRICT  
一个子句，指示如果任何对象依赖该视图，则不删除该视图。此操作是默认操作。

## 示例
<a name="r_DROP_VIEW-examples"></a>

以下示例删除名为 *event* 的视图：

```
drop view event;
```

要删除具有依赖项的视图，请使用 CASCADE 选项。例如，假如我们从名为 EVENT 的表开始。接下来，我们使用 CREATE VIEW 命令创建 EVENT 表的 eventview 视图，如以下示例所示：

```
create view eventview as
select dateid, eventname, catid
from event where catid = 1;
```

现在，我们创建另一个名为 *myeventview* 的视图，该视图基于第一个视图 *eventview*：

```
create view myeventview as
select eventname, catid
from eventview where eventname <> ' ';
```

此时创建了两个视图：*eventview* 和 *myeventview*。

*myeventview* 视图是以 *eventview* 为父视图的子视图。

要删除 *eventview* 视图，要使用的命令如下：

```
drop view eventview;
```

请注意，如果您在这种情况下运行此命令，会收到以下错误：

```
drop view eventview;
ERROR: can't drop view eventview because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
```

要对此进行补救，请执行以下命令（按照错误消息中的建议）：

```
drop view eventview cascade;
```

现在，已成功删除 *eventview* 和 *myeventview*。

以下示例删除 *eventview* 视图（如果存在）；如果不存在该视图，则不执行任何操作并返回一条消息：

```
drop view if exists eventview;
```