Creazione di tabelle. Sesta parte (ALTER TABLE)

In questo secondo ed ultimo intervento sulla ALTER TABLE, vedremo come utilizzarla per aggiungere/eliminare constraint ad una tabella o per modificarne lo stato.

Per aggiungere un nuovo vincolo ad una tabella si utilizza la clausola ADD :

ALTER TABLE impiegati

ADD CONSTRAINT ck_imp_sesso CHECK (sesso in (’M',’F'));

Quindi e’ possibile aggiungere un qualsiasi constraint che non sia stato gia’ definito in fase di creazione della tabella.

Con la MODIFY e’ possibile solo trasformare una colonna null in not null e viceversa (in questo caso, a patto che tutta la colonna sia valorizzata).

Per eliminare un vincolo si utilizza la clausola DROP :

ALTER TABLE impiegati

DROP CONSTRAINT ck_imp_sesso;

Dato che una tabella puo’ avere una sola primary key, la si puo’ eliminare nel seguente modo:

ALTER TABLE impiegati

DROP primary key;

Un constraint di questo tipo puo’ essere eliminato solo se non esistono foreign key che lo referenziano a meno di specificare la clausola CASCADE:

ALTER TABLE impiegati

DROP primary key CASCADE;

In questo modo vengono eliminate anche tutte le foreign key che referenziano la chiave primaria.

Quando parlo di eliminare mi riferisco sempre ai vincoli e non ai dati, che restano intatti.

Le ultime due clausole sono la DISABLE e la ENABLE , che permettono di disabilitare e riabilitare un constraint.

Ad esempio:

ALTER TABLE impiegati

DISABLE CONSTRAINT ck_imp_sesso;

A questo punto e’ possibile inserire qualsiasi lettera nella colonna sesso.

E per riabilitarlo:

ALTER TABLE impiegati

ENABLE CONSTRAINT ck_imp_sesso;

Questa istruzione va a buon fine solo se tutti i record soddisfano il vincolo che si sta abilitando.

La disabilitazione di un constraint quindi non serve a permettere l’inserimento di record non coerenti con il constraint ma per velocizzare l’inserimento di grosse moli di dati.

Nel caso della primary key e’ possibile utilizzare la clausola CASCADE, per disabilitare in cascata tutte le foreign che la referenziano:

ALTER TABLE impiegati

DISABLE primary key CASCADE;

Iolowcost

Una vita a basso costo?

Visita subito il nostro portale!

Le categorie della guida