Quando creiamo un tabella in SQL Server è possibile attribuire, oltre al tipo di dato che conterranno le varie colonne, anche un loro valore di default.
Tale valore verrà utilizzato per riempire i singoli campi quando non viene specificato il valore di una determinata colonna.
Come è possibile, però, creare un nuovo record contenente SOLO i valori di defautl?
Facciamo un esempio
Set nocount ON;
USE tempdb
-- Definisco una tabella temporanea assegnando ai campi
-- dei valori di default
CREATE TABLE myTable
(
Nome varchar(25) DEFAULT 'Sandro',
Cognome varchar(25) DEFAULT 'Bizioli',
Indirizzo varchar(50) DEFAULT 'Via',
Citta Varchar(20) NULL
) ON [PRIMARY]
GO
-- Popolo la tabella passando almeno il valore di un campo
-- e lasciando riempire gli altri con i valori di default
INSERT INTO myTable(Nome)
VALUES (NULL)
--Inserisco TUTTI i valori di default
INSERT mytable DEFAULT VALUES
-- Recuper i dati appena inseriti
SELECT * FROM mytable
/* OUTPUT
Nome Cognome Indirizzo Citta
------- --------- ----------- -------
NULL Bizioli Via NULL
Nuovo Bizioli Via NULL
*/
--Elimino la tabella temporanea
DROP TABLE myTable
SET NOCOUNT OFF;
Quello che possiamo notare è che se tento di fare una semplice insert sono obbligato a passare almeno un valore, nel mio esempio il nome.
Così facendo, però, la colonna nome, non utilizzerà il valore di default (Sandro), ma giustamente, userà il valoro che gli ho passato come si può notare nella prima riga dell'output.
Nel secondo caso, però, l'intero record sarà riempito con tutti i valori di default. (v. seconda riga dell'output)