CREATE TABLE IF NOT EXISTS y DROP TABLE IF EXISTS en Oracle 19c
Oracle ha incorporado mejoras en el lenguaje SQL que permiten usar CREATE TABLE IF NOT EXISTS y DROP TABLE IF EXISTS en versiones modernas de Oracle 19c.
Disponible desde Oracle 19c Release Update 19.28 en adelante
1. CREATE TABLE IF NOT EXISTS en USERTEST
CREATE TABLE IF NOT EXISTS USERTEST.CLIENTES (
ID NUMBER PRIMARY KEY,
NOMBRE VARCHAR2(100),
CORREO VARCHAR2(150),
FECHA_REGISTRO DATE
);
2. DROP TABLE IF EXISTS
DROP TABLE IF EXISTS USERTEST.CLIENTES;
3. Uso conjunto
DROP TABLE IF EXISTS USERTEST.CLIENTES;
CREATE TABLE IF NOT EXISTS USERTEST.CLIENTES (
ID NUMBER PRIMARY KEY,
NOMBRE VARCHAR2(100),
CORREO VARCHAR2(150),
FECHA_REGISTRO DATE
);
4. Alternativa versiones antiguas
Usar si Oracle es menor a 19.28
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE USERTEST.CLIENTES';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
/
5. Matriz de compatibilidad
| Versión | CREATE IF NOT EXISTS | DROP IF EXISTS | Recomendación |
|---|---|---|---|
| 11g | ❌ | ❌ | PL/SQL |
| 12c | ❌ | ❌ | PL/SQL |
| 18c | ❌ | ❌ | PL/SQL |
| 19c (3-27) | ❌ | ❌ | PL/SQL |
| 19c (28+) | ✔ | ✔ | SQL directo |
| 21c | ✔ | ✔ | SQL directo |
| 23c | ✔ | ✔ | SQL directo |
6. Verificar versión
SELECT * FROM v$version; SHOW USER;
7. Validar tabla
SELECT table_name FROM user_tables WHERE table_name = 'CLIENTES';
Conclusión
Oracle 19c RU 19.28+ permite usar CREATE TABLE IF NOT EXISTS y DROP TABLE IF EXISTS directamente, simplificando scripts de despliegue en el esquema USERTEST.