

 从补丁 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/)。

# TRUNCATE
<a name="r_TRUNCATE"></a>

删除表中的所有行，而不执行表扫描：此操作是非限定的 DELETE 操作的替代方法，其速度更快。要运行 TRUNCATE 命令，您必须对表拥有 TRUNCATE 权限，是表的所有者，或者是超级用户。要授予截断表的权限，请使用 [GRANT](r_GRANT.md) 命令。

TRUNCATE 的效率要比 DELETE 高很多，不需要 VACUUM 和 ANALYZE。不过请注意，TRUNCATE 在其运行的事务中提交事务。

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

```
TRUNCATE [ TABLE ] table_name
```

该命令也适用于实体化视图。

```
TRUNCATE materialized_view_name
```

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

TABLE   
可选关键字。

 *table\$1name*   
一个临时或永久表。只有表所有者或超级用户可以截断表。  
您可以截断任何表，包括在外键约束中引用的表。  
在截断表后，无需对表执行 vacuum 操作。

 *materialized\$1view\$1name*   
实体化视图。  
您可以截断用于[流式摄取到实体化视图](materialized-view-streaming-ingestion.md)的实体化视图。

## 使用说明
<a name="r_TRUNCATE_usage_notes"></a>
+  TRUNCATE 命令提交运行该命令的事务；因此，您无法回滚 TRUNCATE 操作，TRUNCATE 命令可能在提交自身时提交其他操作。
+ TRUNCATE 操作在连接到以下任何一项的 Amazon Redshift 流式传输实体化视图上运行时，将持有排他锁：
  +  Amazon Kinesis 数据流 
  +  Amazon Managed Streaming for Apache Kafka 主题 
  +  支持的外部流，例如 Confluent Cloud Kafka 主题 

  有关更多信息，请参阅 [流式摄取到实体化视图](materialized-view-streaming-ingestion.md)。

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

使用 TRUNCATE 命令可以删除 CATEGORY 表中的所有行：

```
truncate category;
```

尝试回滚 TRUNCATE 操作：

```
begin;

truncate date;

rollback;

select count(*) from date;
count
-------
0
(1 row)
```

DATE 表在 ROLLBACK 命令后保留为空，因为已自动提交 TRUNCATE 命令。

以下示例使用 TRUNCATE 命令从实体化视图中删除所有行。

```
truncate my_materialized_view;
```

此命令会删除实体化视图中的所有记录，并保持实体化视图及其架构不变。在查询中，实体化视图名称是一个示例。