2014-09-17 3 views
10

Ich habe eine Tabelle, in der alle Spalten automatisch gefüllt sind, wenn ein Einfügen geschieht:Wie fügt man in eine Tabelle ein, die für jede Spalte einen DEFAULT-Wert angibt?

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

Wie kann ich eine SQL-Anweisung schreiben, die manuell eine neue Zeile in dieser Tabelle einfügt bieten keine konkreten Werte ohne einfügen ?

(Es gibt bereits a similar question, aber es unterscheidet sich darin, dass es bei einigen nicht DEFAULT Spalten über eine Tabelle ist, für die ein Wert muss manuell zur Verfügung gestellt werden.)

+0

Als eine ehrliche Frage, was nützt solch ein Tisch? –

+0

Die Tabelle wird verwendet, um ItemIDs zu halten, die in anderen Tabellen als Fremdschlüssel verwendet werden. Ein Foto ist beispielsweise ein Gegenstand, ein Video ist ein Gegenstand usw. Die ItemID-Tabelle wird benötigt, um eine eindeutige ID über mehrere Tabellen hinweg zu behalten. Wenn also jemand ein neues Foto einfügt, fügt es zuerst eine Zeile zu der in meiner Frage erwähnten Tabelle hinzu, die automatisch einen eindeutigen Wert für ItemID erzeugt. Dieser automatisch generierte Wert wird als FK in die Fototabelle eingefügt. –

+1

Alternative: Verwenden Sie eine "SEQUENCE", um eindeutige Schlüsselwerte für mehrere Tabellen zu generieren. Es ist eine neue Funktion von SQL Server 2012 und weist einige eigene Probleme auf (ähnlich wie IDENTITY), erfordert jedoch weniger Speicherplatz als eine zusätzliche Tabelle. – stakx

Antwort

18

Verwenden Sie die DEFAULT VALUES Option:

INSERT INTO IndentitySpecification 
DEFAULT VALUES; 
+1

Nun, das hat den Trick! Vielen Dank mein Freund –

+5

+1 wow wusste nicht, wir könnten das tun :) –

Verwandte Themen