Cambiar el nombre de una tabla dentro de un esquema en PostgreSQL

Bilal Shahid 20 junio 2023
Cambiar el nombre de una tabla dentro de un esquema en PostgreSQL

En PostgreSQL, a menudo tendemos a CREAR tablas y usarlas para almacenar datos. Cuando CREEMOS una tabla como la siguiente:

create table cat (
    ID int,
    NAME text
)

Ya asignamos un NOMBRE a nuestra tabla cuando la creamos. En el ejemplo anterior, le dimos el nombre CAT a nuestra tabla, y una vez que se solucione, probablemente tengamos que usar otros medios para RENOMBRAR nuestra tabla una vez que se haya creado.

La sintaxis para CREAR una tabla es la siguiente:

CREATE TABLE [Table_name] (
     [variable_names] [variable_types]
)

¿Qué es un ESQUEMA? Un ESQUEMA contiene objetos de base de datos como tablas, vistas, índices y posiblemente todo lo que puede estar contenido dentro de su DBMS.

Ahora sigamos adelante y aprendamos cómo podemos RENOMBRAR nuestra tabla dentro de nuestro ESQUEMA una vez que se haya creado.

la sintaxis básica de cambio de nombre en PostgreSQL

Para renombrar una tabla ya creada en PostgreSQL, podemos utilizar la sentencia ALTER que tiende a realizar cambios o modificar algún objeto ya realizado dentro del esquema de PostgreSQL. Una instrucción ALTER que tendería a RENOMBRAR una tabla usa sintaxis.

ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name

Tomemos el ejemplo de la tabla CAT que usamos varias veces en nuestros tutoriales. Una operación SELECT en nuestra base de datos devolvería algo como lo siguiente.

Select * from information_schema.tables
where table_name = 'cat'

Producción :

"postgres'        "public"    "cat"        "BASE TABLE"

Y luego, podemos realizar la operación de RENOMBRAR en esta tabla de la siguiente manera.

alter table CAT rename to KITTEN

Y ahora, cuando busquemos CAT en nuestra base de datos, devolverá un resultado vacío. Sin embargo, buscar GATITO funcionaría perfectamente con los mismos valores que tenía la tabla CAT.

"postgres"	"public"	"kitten"	"BASE TABLE"

Por lo tanto, nuestro RENOMBRAR básico con la función ALTERAR funciona perfectamente. Puede realizar esta misma consulta en PSQL usando algo.

ALTER TABLE cat rename to Kitten;

Y devolverá la salida de la siguiente manera en caso de éxito.

Producción:

alterar la tabla

Errores al RENOMIZAR tablas específicas de ESQUEMA en PostgreSQL

El error de sintaxis es uno de los errores más comunes al realizar una operación RENAME en una tabla hecha dentro de un SCHEMA diferente al presente actualmente.

Por ejemplo, si tiendes a hacer un ESQUEMA de la siguiente manera:

CREATE SCHEMA tester;

Y luego haz una mesa dentro.

CREATE TABLE tester.dog (
   id INT,
   name TEXT
)

La tabla ahora reside dentro del ESQUEMA especificado. Sin embargo, llamar a la operación RENAME de la siguiente manera devolverá un error.

ALTER TABLE tester.dog RENAME TO tester.doggy

Producción :

ERROR:  syntax error at or near "."
LINE 1: ALTER TABLE tester.dog RENAME TO tester.doggy

¿Por qué? Si miras el texto RENOMBRAR, dice algo como lo siguiente.

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name

El nuevo_nombre_columna tiene que ser una CADENA válida. Por lo tanto, no puede usar otros caracteres como . y ,, que pueden invalidar una CADENA.

Por lo tanto, si sigue adelante y hace algo de la siguiente manera.

alter table tester.dog rename to doggy;

Funcionará perfectamente bien. Así que ahora, si nos fijamos en la tabla DOMAIN.DOG, habría sido RENOMBRADO a DOMAIN.DOGGY.

Otra forma de lograr esto es usar una solución alternativa que tiende a RENOMBRAR la tabla en algo que vemos arriba. Debido a que actualmente estamos trabajando con un ESQUEMA, podemos encontrar errores al usar el . notación para especificar una tabla dentro de un ESQUEMA.

Ahora seguiremos adelante y aprenderemos sobre RUTAS DE BÚSQUEDA.

RUTAS DE BÚSQUEDA para CAMBIO DE NOMBRE TABLAS DE ESQUEMA en PostgreSQL

Las ‘RUTAS DE BÚSQUEDA’ se definen globalmente como una tendencia a cambiar la referencia del ‘ESQUEMA’ al que se hace referencia actualmente a la definida en la sintaxis de ‘RUTA DE BÚSQUEDA’. Utiliza la sintaxis de la siguiente manera.

search_path (string)

Y se define en los VALORES PREDETERMINADOS DE LA CONEXIÓN DEL CLIENTE. Ejecute la siguiente consulta para RENOMBRAR la TABLA.

SET search_path to tester;
alter table doggy rename to dogie

ESTABLECE la ruta_búsqueda en el esquema DOMINIO, y luego, cuando llamamos a la tabla DOGI, automáticamente sabe que se hace referencia a la tabla desde el esquema DOMINIO.

Por lo tanto, esta consulta de una línea es mucho mejor para hacer referencia a las tablas dentro de un ESQUEMA en lugar de llamar a un DOMINIO.NOMBRE_TABLA.

SEARCH_PATH también puede tener varios nombres de SCHEMA separados por comas, y cuando llamamos a TABLE u OBJECT, se comprueba desde cada uno de estos SCHEMAS definidos.

También puede agregar la cláusula SI EXISTE para verificar si la TABLA o el OBJETO al que se hace referencia existe y luego continuar y ejecutarlo.

Esperamos que hayas aprendido a RENOMBRAR tablas en PostgreSQL con diferentes opciones y escenarios. Tenga en cuenta que diferentes variaciones de la declaración RENAME pueden funcionar en muchos casos.

Al trabajar en una base de datos, saber a qué SCHEMA se hace referencia, a qué OBJECT se llama y dónde se requiere para prevenir y evitar errores. Esperamos que nuestras soluciones puedan ayudarlo a comprender las diferentes formas en que una tabla puede ser CAMBIADA DE NOMBRE.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - PostgreSQL Table