2014-09-17 5 views
10

Ho una tabella in cui tutte le colonne sono compilati automaticamente ogni volta che un inserimento avviene:Come inserire in una tabella che specifica un valore DEFAULT per ogni colonna?

CREATE TABLE … 
(
    ItemID  INT  NOT NULL IDENTITY(…), 
    DateCreated DATETIME2 NOT NULL DEFAULT GETDATE() 
); 

Come si scrive un'istruzione SQL che inserisce una nuova riga in questa tabella, senza dover fornire manualmente i valori concreti da inserire ?

(Esiste già a similar question, ma si differenzia in quanto si tratta di un tavolo con alcune non DEFAULT colonne per i quali deve essere fornito un valore manualmente.)

+0

Come domanda onesta, a che serve un tavolo simile? –

+0

La tabella viene utilizzata per contenere ItemID utilizzati in altre tabelle come chiave esterna. Ad esempio, una foto è un articolo, un video è un articolo, ecc. La tabella ItemID è necessaria per mantenere un ID univoco su più tabelle. Quindi, quando qualcuno inserisce una nuova foto, la prima aggiunge una riga alla tabella menzionata nella mia domanda che genera automaticamente un valore univoco per ItemID. Questo valore generato automaticamente viene inserito nella tabella Foto come FK. –

+1

Alternativa: utilizzare un 'SEQUENCE' per generare valori chiave univoci su più tabelle. È una funzionalità nuova di SQL Server 2012 e presenta alcuni problemi (simile a IDENTITY), ma richiede meno spazio di archiviazione rispetto a una tabella aggiuntiva. – stakx

risposta

18

Utilizzare l'opzione DEFAULT VALUES:

INSERT INTO IndentitySpecification 
DEFAULT VALUES; 
+1

Bene, questo ha fatto il trucco! Molte grazie amico mio –

+5

+1 wow non sapevo che potevamo fare questo :) –