Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
ALTER TABLE IF EXISTS
Supported by ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
A popular subclause of DDL statements that jOOQ can usually emulate, is the IF EXISTS clause:
// Renaming the table
create.alterTableIfExists("old_table").renameTo("new_table").execute();
Dialect support
This example using jOOQ:
alterTableIfExists("old").renameTo("new")
Translates to the following dialect specific expressions:
Aurora MySQL
ALTER TABLE old RENAME TO new
Aurora Postgres, BigQuery, CockroachDB, DuckDB, H2, Oracle, Postgres, Snowflake, Trino, YugabyteDB
ALTER TABLE IF EXISTS old RENAME TO new
DB2
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END;
EXECUTE IMMEDIATE '
RENAME TABLE old TO new
';
END
Hana
DO BEGIN
DECLARE EXIT HANDLER FOR SQL_ERROR_CODE 259 BEGIN END;
EXECUTE IMMEDIATE '
RENAME TABLE old TO new
';
END;
MariaDB
BEGIN NOT ATOMIC DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' BEGIN END; ALTER TABLE old RENAME TO new; END
MySQL
CREATE PROCEDURE block_1761056260112_3081144() MODIFIES SQL DATA BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' BEGIN END; ALTER TABLE old RENAME TO new; END; CALL block_1761056260112_3081144(); DROP PROCEDURE block_1761056260112_3081144;
SQLServer
BEGIN TRY
EXEC sp_executesql N'
EXEC sp_rename ''old'', new
';
END TRY
BEGIN CATCH
IF error_number() NOT IN (4902, 15165, 15225) THROW;
END CATCH
ASE, Access, ClickHouse, Databricks, Exasol, Firebird, HSQLDB, Informix, MemSQL, Redshift, SQLDataWarehouse, SQLite, Spanner, Sybase, Teradata, Vertica
/* UNSUPPORTED */
Generated with jOOQ 3.21. Support in older jOOQ versions may differ. Translate your own SQL on our website
Feedback
Do you have any feedback about this page? We'd love to hear it!