Eliminar restricción no nula en PostgreSQL

Bilal Shahid 20 junio 2023
  1. Importancia de usar la restricción NOT NULL
  2. Aplicar la restricción No nulo en PostgreSQL
  3. Elimine la restricción No nula en PostgreSQL
Eliminar restricción no nula en PostgreSQL

La restricción NOT NULL es una herramienta bastante útil en PostgreSQL. Sin embargo, puede ser un poco complicado de usar. Este artículo discutirá cómo puede aplicarlo y soltarlo para lograr los resultados deseados en su base de datos.

Importancia de usar la restricción NOT NULL

La restricción se puede definir como reglas preestablecidas aplicadas a una columna en una tabla para que los datos ingresados en ella se alineen con los requisitos.

Evitará la entrada de datos no válidos, lo que tiende a ser un gran problema, especialmente si tiene una gran cantidad de datos en una base de datos extensa con múltiples relaciones. Puede aplicar tantas restricciones como desee o ninguna.

La restricción NOT NULL es una restricción particular que podemos agregar a cualquier columna de una tabla. Como sugiere el nombre, evita que la entrada en cada fila de esa columna sea NULL.

Es particularmente esencial cuando se trata de claves PRIMARY, que nunca pueden ser NULL. También es necesario a la hora de establecer relaciones, ya que no se pueden crear o muchas veces se hacen de forma incorrecta cuando se trata de valores NULL.

También evitarán que un usuario salte accidentalmente una entrada. Entonces, comencemos a aprender cómo podemos aplicar una restricción NOT NULL en PostgreSQL.

Aplicar la restricción No nulo en PostgreSQL

Aplicar la restricción NOT NULL no es tan difícil como parece. En la mayoría de los casos, es solo una línea adicional de código. Puede usar cualquiera de los siguientes métodos según su situación.

Agregue la restricción NOT NULL al crear una tabla

El mejor momento para agregar la restricción NOT NULL a una columna es durante la creación. Es porque solo implica agregar NOT NULL al lado de esta manera:

CREATE TABLE name(
    column_1 int PRIMARY KEY,
    column_2 VARCHAR (100),
    column_3 VARCHAR (300) NOT NULL
);

Aquí, la restricción NOT NULL se agrega a column_3.

Agregue la restricción NOT NULL a una tabla existente

Una de las muchas cosas que facilitan el uso de PostgreSQL es que siempre puede agregar restricciones adicionales, incluso si la tabla ya se ha creado. Puedes probar esto usando el siguiente código.

Primero, crea una tabla:

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    "e-mail" VARCHAR (300)
);

Creará una tabla; sin embargo, si se da cuenta de que olvidó agregar una restricción NOT NULL, puede hacerlo de dos maneras. El primero requiere un poco más de trabajo. Primero suelta la tabla existente y crea una nueva, como se muestra a continuación:

DROP TABLE users;

Después de esto, cree la tabla nuevamente con la restricción no nula como se muestra a continuación:

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    "e-mail" VARCHAR (300) NOT NULL
);

Este método funcionará, pero requiere un poco de tiempo. Una alternativa mucho más simple es usar el comando ALTER TABLE como se muestra a continuación:

ALTER TABLE users 
ALTER COLUMN "e-mail" set not null;

De esta manera, la restricción NOT NULL se agrega a la columna e-mail. Además, no tiene que eliminar su tabla para esto.

Elimine la restricción No nula en PostgreSQL

Mientras edita su base de datos, es posible que se dé cuenta de que la restricción NOT NULL no es necesaria o está colocada incorrectamente. En momentos como estos, es necesario saber cómo eliminar o descartar la restricción NOT NULL. Estas son algunas de las formas:

Elimine la restricción NOT NULL en columnas individuales

Si desea eliminar la restricción en columnas individuales, puede hacerlo fácilmente con el mismo comando ALTERAR TABLA pero con una ligera diferencia ya que ahora está eliminando la restricción. Puedes lograr esto usando el siguiente código:

ALTER TABLE users
ALTER COLUMN "e-mail" drop not null;

Puede eliminar rápidamente la restricción Postgres NOT NULL en la columna e-mail. Es una mejor alternativa que descartar toda la tabla y volver a crearla sin agregar la restricción NOT NULL a las columnas deseadas.

Suelte la restricción NOT NULL en varias columnas

Puede usar el código anterior varias veces si desea eliminar la restricción en varias columnas.

ALTER TABLE users
ALTER COLUMN "e-mail" drop not null;

ALTER TABLE users
ALTER COLUMN new_column drop not null;

Sin embargo, esto puede llevar un poco de tiempo. Afortunadamente, PostgreSQL ofrece una alternativa que podemos usar para eliminar NOT NULL de la siguiente manera.

ALTER TABLE users
ALTER COLUMN "e-mail" drop not null,
ALTER COLUMN new_column drop not null;

De esta manera, puede eliminar la restricción NOT NULL en varias columnas de una sola vez.

Eliminar todas las restricciones No nulas en PostgreSQL

El método anterior puede ser útil si no tiene muchas columnas que deban modificarse. Sin embargo, si desea eliminar todas las restricciones “NO NULAS” de una tabla con muchas columnas, puede ser un desafío identificar todas las columnas necesarias.

Para ello, puede utilizar el siguiente código:

SELECT x.attname
FROM pg_catalog.pg_attribute x
WHERE attrelid = 'users'::regclass
AND x.attnum > 0
AND NOT x.attisdropped
AND x.attnotnull;

Filtrará todas las columnas con una restricción NOT NULL. Sin embargo, esto también incluirá claves PRIMARIAS, que es posible que desee excluir según sus requisitos.

Después de esto, use el código anterior para eliminar las restricciones de todas las columnas necesarias. Ese es un método sencillo que ofrece PostgreSQL para agregar y quitar las restricciones NOT NULL a las columnas de una tabla.

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