it-swarm.com.de

Wie füge ich Standardwerte in eine SQL-Tabelle ein?

Ich habe einen Tisch wie diesen:

create table1 (field1 int,
               field2 int default 5557,
               field3 int default 1337, 
               field4 int default 1337)

Ich möchte eine Zeile einfügen, die die Standardwerte für Feld2 und Feld4 enthält.

Ich habe insert into table1 values (5,null,10,null) ausprobiert, aber es funktioniert nicht und ISNULL(field2,default) funktioniert auch nicht.

Wie kann ich der Datenbank mitteilen, dass beim Einfügen einer Zeile der Standardwert für die Spalte verwendet werden soll?

59

Nehmen Sie nur nicht die Spalten auf, für die Sie den Standardwert in Ihrer Einfügeanweisung verwenden möchten. Zum Beispiel:

INSERT INTO table1 (field1, field3) VALUES (5, 10);

... übernimmt die Standardwerte für field2 und field4 und weist field1 5 und field3 10 zu.

67
aroth

Bewährtes Verfahren zum Auflisten Ihrer Spalten, damit Sie unabhängig von Tabellenänderungen sind (neue Spalte oder Spaltenreihenfolge usw.)

insert into table1 (field1, field3)  values (5,10)

Wenn Sie dies jedoch nicht möchten, verwenden Sie das Schlüsselwort DEFAULT

insert into table1 values (5, DEFAULT, 10, DEFAULT)
129
gbn

Der beste Weg ist:

insert your_table
default values
25
inon

Probieren Sie es so aus

INSERT INTO table1 (field1, field3) VALUES (5,10)

Dann sollten Feld2 und Feld4 Standardwerte haben.

5
fkerber

Wenn Ihre Spalten keine NULL Werte enthalten sollen, müssen Sie die Spalten ebenfalls als NOT NULL Definieren, da andernfalls die in NULL übergebenen Werte anstelle der Standardwerte verwendet und nicht erzeugt werden ein Fehler.

Wenn Sie den Wert any nicht an diese Felder übergeben (was erfordert, dass Sie die Felder angeben, die Sie do verwenden möchten), werden die Standardwerte verwendet:

INSERT INTO 
  table1 (field1, field3) 
VALUES   (5,10)
3
Oded

Sie können auf diese Weise schreiben

GO
ALTER TABLE Table_name  ADD
column_name decimal(18, 2) NOT NULL CONSTRAINT Constant_name DEFAULT 0
GO
ALTER TABLE Table_name SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
1
Biddut

Um die Standardwerte einzufügen, sollten Sie sie weglassen:

Insert into Table (Field2) values(5)

Alle anderen Felder haben Null oder ihre Standardwerte, wenn sie definiert wurden.

0
Beatles1692