Press "Enter" to skip to content

SQL script di manutenzione database

Se come me, lavorate con Analisti creativi, succede spesso di dover modificare i database per aggiungere tabelle, cancellare tabelle, modificare tabelle, pertanto visto che è buona norma che se eseguite due volte uno script SQL ci sia un minimo di controlli affinchè non vadano in errore scrivo qui la sintassi base di alcuni dei più comuni controlli di esistenza per gli oggetti database, così anche io quando ne ho bisogno vengo qui e faccio copia ed incolla 😛

IF NOT EXISTS (
    SELECT 1 FROM sysobjects WHERE xtype='u' 
       AND name='MyTable')
    BEGIN
       CREATE TABLE Mytable …;
    END

Questo primo pezzettino può anche essere usato togliendo il not per fare un Drop Table.

IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = 
OBJECT_ID('[FK_MyForeignKeyConstraintName]')
AND parent_object_id = OBJECT_ID('[MyTable]')) ALTER TABLE [MyTable] DROP CONSTRAINT [FK_MyForeignKeyConstraintName]

Questo pezzettino va usato quando abbiamo bisogno di cancellare una tabella che ha all’interno delle relazioni, prima si devono cancellare le relazioni, poi la tabella oppure da errore.

IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id=object_id('MyTable') AND name='MyColumnName')
    ALTER TABLE MyTable ADD MyColumnName int NULL;

Questo controllo è opportuno sugli script che aggiungono colonne, ma allo stesso modo, senza NOT può essere usato per cancellare colonne.