🧚 Ascolta! Beekeeper Studio è una GUI per PostgreSQL veloce, moderna e open source Scarica
6 luglio 2024 Di Matthew Rathbone

Per eliminare un vincolo in PostgreSQL, usa il comando ALTER TABLE seguito dalla
clausola DROP CONSTRAINT, indicando il nome del vincolo da
eliminare. Fai attenzione, perché può causare problemi di integrità dei dati.

Sintassi di base:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

Prima di continuare a leggere, volevo parlarti del nostro gestore di database PostgreSQL moderno e veloce, Beekeeper Studio. Il suo editor della struttura delle tabelle ti permette di rimuovere una foreign key o un indice unique con un clic, ed è gratuito per PostgreSQL: scaricalo qui.

Tipi di vincoli in PostgreSQL

Prima di imparare a eliminare i vincoli, è utile conoscere i tipi di vincoli più comuni:

  • Chiave primaria
  • Chiave esterna
  • Unique
  • Check

Eliminare un vincolo di chiave primaria

Una chiave primaria identifica in modo univoco ogni record di una tabella.

Esempio:

Supponiamo di avere una tabella, users:

CREATE TABLE users (
    user_id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL
);

Per eliminare il vincolo di chiave primaria:

ALTER TABLE users
DROP CONSTRAINT users_pkey;

Output previsto:

ALTER TABLE

In questo caso, users_pkey è il nome del vincolo che vuoi eliminare. Puoi trovare il nome del vincolo usando il comando \d nel terminale psql seguito dal nome della tabella di cui vuoi vedere i vincoli, oppure nella scheda Indexes di Beekeeper Studio, che ti mostra i dettagli della tabella, inclusi i nomi dei vincoli.

Eliminare un vincolo di chiave esterna

Le chiavi esterne garantiscono l'integrità referenziale tra due tabelle. Ecco come eliminare un vincolo di chiave esterna.

Esempio:

Considera due tabelle, orders e customers:

CREATE TABLE customers (
    customer_id serial PRIMARY KEY,
    customer_name VARCHAR (100) NOT NULL
);

CREATE TABLE orders (
    order_id serial PRIMARY KEY,
    order_date DATE NOT NULL,
    customer_id INT,
    CONSTRAINT fk_customer
        FOREIGN KEY(customer_id) 
        REFERENCES customers(customer_id)
);

Per eliminare il vincolo di chiave esterna fk_customer:

ALTER TABLE orders
DROP CONSTRAINT fk_customer;

Output previsto:

ALTER TABLE

Per saperne di più, leggi Come eliminare un vincolo di chiave esterna.

Eliminare un vincolo unique

I vincoli unique garantiscono che tutti i valori di una colonna siano diversi. Eliminare un vincolo unique funziona come per gli altri vincoli.

Esempio:

Data la tabella users:

CREATE TABLE users (
    user_id serial PRIMARY KEY,
    username VARCHAR (50) UNIQUE NOT NULL
);

Per eliminare il vincolo unique sulla colonna username:

ALTER TABLE users
DROP CONSTRAINT users_username_key;

Output previsto:

ALTER TABLE

Vedi Creare vincoli unique in PostgreSQL

Eliminare un vincolo check

I vincoli check garantiscono l'integrità di dominio limitando i valori che possono essere inseriti in una colonna.

Esempio:

Supponiamo di avere una tabella products:

CREATE TABLE products (
    product_id serial PRIMARY KEY,
    price DECIMAL (10, 2) NOT NULL,
    CONSTRAINT price_check CHECK (price > 0)
);

Per eliminare il vincolo check price_check:

ALTER TABLE products
DROP CONSTRAINT price_check;

Output previsto:

ALTER TABLE

I dati non vengono modificati

Vale la pena notare che, quando elimini un vincolo, i dati presenti nella tabella non vengono toccati. Il vincolo viene semplicemente rimosso e potrai inserire o aggiornare i dati nella tabella senza dover rispettare i vincoli che erano in vigore prima.

Eliminare i vincoli può causare problemi di integrità

È importante fare attenzione quando elimini dei vincoli, perché può causare problemi di integrità dei dati se i vincoli esistevano per un motivo. Ad esempio, se elimini un vincolo di chiave primaria, potresti ritrovarti con più righe nella tabella con gli stessi valori nella colonna della chiave primaria, il che può creare problemi quando esegui query o aggiorni i dati della tabella.

Per questo è sempre una buona idea controllare a fondo i dati e i vincoli presenti prima di eliminare qualsiasi vincolo nel tuo database. Valuta anche il possibile impatto su applicazioni o processi che dipendono dai dati della tabella prima di procedere con l'eliminazione.

Conclusione

Per eliminare i vincoli in PostgreSQL si usa il comando ALTER TABLE seguito da DROP CONSTRAINT. Ogni tipo di vincolo (chiave primaria, chiave esterna, unique e check) può essere eliminato indicandone il nome. Fai attenzione, perché può causare problemi di integrità dei dati se il vincolo esisteva per un motivo valido. Saper gestire bene i vincoli ti permette di mantenere e far evolvere lo schema del tuo database nel tempo.

Beekeeper Studio è una GUI per PostgreSQL gratuita e open source

Questo è il client PostgreSQL che stavo cercando! È l'interfaccia a fare la differenza: pulita, intuitiva, potente. Addio al macchinoso PGAdmin. - David Cyprian

Beekeeper Studio è un client PostgreSQL veloce, intuitivo e facile da usare. Supporta anche tantissimi altri database e funziona alla grande su Windows, Mac e Linux.

La versione Linux di Beekeeper è completa al 100%, senza tagli e senza compromessi sulle funzionalità.

Cosa dicono gli utenti PostgreSQL di Beekeeper Studio

Jay Simons Jay Simons Titolare, Designly.biz

A differenza di pgAdmin, Beekeeper è davvero semplice da usare senza rinunciare alle funzionalità, e il prezzo è giusto! La funzione di backup del database è particolarmente utile. Un software eccellente.

Alex M

Strumento favoloso, l'IDE più pratico che abbia trovato finora per amministrare database Postgres e MySql: funziona e basta, senza complicazioni :-)

Pronto a migliorare il tuo workflow con PostgreSQL?

download Scarica gratis