Skip to main content

ALTER TABLE SWAP WITH

Introduced or updated: v1.2.821

Swaps all table metadata and data between two tables atomically in a single transaction. This operation exchanges the table schemas, including all columns, constraints, and data, effectively making each table take on the identity of the other.

Syntax

ALTER TABLE [ IF EXISTS ] <source_table_name> SWAP WITH <target_table_name>
ParameterDescription
source_table_nameThe name of the first table to swap
target_table_nameThe name of the second table to swap with

Usage Notes

  • Engine Support: Only available for Fuse Engine tables. External tables, system tables, and other non-Fuse tables are not supported.
  • Table Type: Temporary tables cannot be swapped with permanent or transient tables.
  • Permissions: The current role must be the owner of both tables to perform the swap operation.
  • Database Scope: Both tables must be in the same database. Cross-database swapping is not supported.
  • Atomicity: The swap operation is atomic. Either both tables are swapped successfully, or neither is changed.
  • Data Preservation: All data and metadata are preserved during the swap. No data is lost or modified.

Examples

-- Create two tables with different schemas
CREATE OR REPLACE TABLE t1(a1 INT, a2 VARCHAR, a3 DATE);
CREATE OR REPLACE TABLE t2(b1 VARCHAR);

-- Check table schemas before swap
DESC t1;
DESC t2;

-- Swap the tables
ALTER TABLE t1 SWAP WITH t2;

-- After swapping, t1 now has t2's schema, and t2 has t1's schema
DESC t1;
DESC t2;
Explore Databend Cloud for FREE
Low-cost
Fast Analytics
Easy Data Ingestion
Elastic Scaling
Try it today