ALTER TABLE IF EXISTS
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
DDL 语句中一个常见的子句是 IF EXISTS
子句,jOOQ 通常可以模拟它
// Renaming the table create.alterTableIfExists("old_table").renameTo("new_table").execute();
方言支持
此示例使用 jOOQ
alterTableIfExists("old").renameTo("new")
翻译成以下特定方言的表达式
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_1752830487523_7972374() MODIFIES SQL DATA BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' BEGIN END; ALTER TABLE old RENAME TO new; END; CALL block_1752830487523_7972374(); DROP PROCEDURE block_1752830487523_7972374;
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, Derby, Exasol, Firebird, HSQLDB, Informix, MemSQL, Redshift, SQLDataWarehouse, SQLite, Sybase, Teradata, Vertica
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!