TRUNCATE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

TRUNCATE

刪除資料表中的所有資料列而不執行資料表掃描:此操作是不合格DELETE操作的更快替代方案。若要執行TRUNCATE命令,您必須擁有 TRUNCATE TABLE 許可、資料表的擁有者或超級使用者。若要授予截斷資料表的權限,請使用 GRANT 命令。

TRUNCATE 比 更有效率DELETE,而且不需要 VACUUM和 ANALYZE。不過,請注意 會TRUNCATE遞交執行交易的 。

語法

TRUNCATE [ TABLE ] table_name

此命令也適用於具體化視觀表。

TRUNCATE materialized_view_name

參數

TABLE

選用的關鍵字。

table_name

暫時性或持久性資料表。只有資料表的擁有者或超級使用者可將它截斷。

您可以截斷任何資料表,包括外部索引鍵限制條件中參考的資料表。

您不需要在截斷資料表之後將它清空。

materialized_view_name

具體化視觀表。

您可以截斷用於 將擷取串流至具體化視觀表 的具體化視觀表。

使用須知

TRUNCATE 命令會遞交執行該命令的交易;因此,您無法復原TRUNCATE操作,且TRUNCATE命令可能會在遞交時遞交其他操作。

範例

使用 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;

它會刪除具體化視觀表中的所有記錄,並保持具體化視觀表及其結構描述不變。在查詢中,具體化視觀表名稱是一個範例。