sabato 3 gennaio 2009

TRUNCATE TABLE vs DELETE

TRUNCATE TABLE
Rimuove tutte le righe da una tabella senza registrare le eliminazioni delle singole righe.

E' più rapida dell'istruzione DELETE e utilizza un numero minore di risorse di sistema e del log delle transazioni.

TRUNCATE TABLE rimuove tutte le righe da una tabella, ma non rimuove la struttura della tabella e le relative colonne, i vincoli, gli indici e così via. Per quest'ultima operazione esiste l'istruzione DROP TABLE. Insomma truncate table ... azzera la tabella.



Un'altro vantaggio è dato dal fatto che se la tabella contiene un campo Identity, il contatore per questo campo viene inizializzato.

Sintassi:

TRUNCATE TABLE
NomeTabella


Esempio:

Con la seguente tabella avente nome anagrafica

ID Cognome Nome Sesso
1 Cognome1 Nome1 M
2 Cognome2 Nome2 F
3 Cognome3 Nome3 F
4 Cognome4 Nome4 M

Eseguiamo:

TRUNCATE TABLE
anagrafica

Otterremo:

ID Cognome Nome Sesso




Facendo un nuovo inserimento otterremo:

ID Cognome Nome Sesso
1 Cognome5 Nome5 F

Fonte: TRUNCATE TABLE (Transact-SQL)

DELETE TABLE

Elimina alcune righe (o tutte) da una tabella.

L'istruzione DELETE può avere esito negativo se viola un trigger o tenta di rimuovere una riga a cui fanno riferimento i dati di un'altra tabella contenente un vincolo FOREIGN KEY.

Se l'istruzione DELETE tenta di rimuovere più righe e l'eliminazione di una qualsiasi di queste righe viola un trigger o un vincolo, l'istruzione viene annullata, viene restituito un errore e non viene rimossa alcuna riga.

Sintassi:

DELETE
FROM
NomeTabella
WHERE
NomeCampo = ValoreScelto

Esempio:

Con la seguente tabella avente nome anagrafica

ID Cognome Nome Sesso
1 Cognome1 Nome1 M
2 Cognome2 Nome2 F
3 Cognome3 Nome3 F
4 Cognome4 Nome4 M

Eseguiamo:

DELETE
FROM
anagrafica
WHERE
Sesso = 'M'

Otterremo:

ID Cognome Nome Sesso
2 Cognome2 Nome2 F
3 Cognome3 Nome3 F

Se invece avessimo eseguito:

DELETE
FROM
anagrafica

Otterremo:

ID Cognome Nome Sesso




Facendo un nuovo inserimento otterremo:

ID Cognome Nome Sesso
5 Cognome5 Nome5 F

Fonte: DELETE (Transact-SQL)

Buona cancellata! ;)

Nessun commento:

Posta un commento