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 es versucht, insert into table1 values (5,null,10,null)
aber es funktioniert nicht undISNULL(field2,default)
auch nicht.
Wie kann ich der Datenbank mitteilen, dass sie beim Einfügen einer Zeile den Standardwert für die Spalte verwenden soll?
Antworten:
Fügen Sie nur nicht die Spalten, für die Sie den Standardwert verwenden möchten, in Ihre insert-Anweisung ein. Zum Beispiel:
INSERT INTO table1 (field1, field3) VALUES (5, 10);
... übernimmt die Standardwerte für
field2
undfield4
und weist 5 bisfield1
und 10 zufield3
.quelle
NOT NULL
…Es wird empfohlen, Ihre Spalten so aufzulisten, dass Sie unabhängig von Tabellenänderungen sind (neue Spalten- oder Spaltenreihenfolge usw.).
insert into table1 (field1, field3) values (5,10)
Wenn Sie dies jedoch nicht möchten, verwenden Sie das
DEFAULT
Schlüsselwortinsert into table1 values (5, DEFAULT, 10, DEFAULT)
quelle
(CASE WHEN This = That THEN 'SpecifiedValue' ELSE DEFAULT END)
würde es nicht funktionieren, sehr zu meinem Leidwesen. Ich musste entweder mehrere Insert-Anweisungen vorbereiten, um alle meine Szenarien abzudecken, oder Dynamic-SQL verwenden. :(DEFAULT
. Ich musste die nicht standardmäßigen Spalten wie im oberen Beispiel angeben, dann nur Werte für diese angeben, und dann funktionierte es schließlich.DEFAULT
sicher? (Wenn es nicht dokumentiert ist, können wir uns nicht beschweren, wenn die Funktionalität in der zukünftigen Version von sqlite3 ohne Vorankündigung weggelassen wird.)Der beste Weg ist:
insert your_table default values
quelle
Versuchen Sie es so
INSERT INTO table1 (field1, field3) VALUES (5,10)
Dann sollten Feld2 und Feld4 Standardwerte haben.
quelle
Wenn Ihre Spalten keine
NULL
Werte enthalten sollen , müssen Sie auch die Spalten definierenNOT NULL
, andernfalls die übergebenenNULL
anstelle der Standardeinstellung verwendet und erzeugt keinen Fehler.Wenn Sie diesen Feldern keinen Wert übergeben (für den Sie die Felder angeben müssen, die Sie verwenden möchten), werden die Standardeinstellungen verwendet:
INSERT INTO table1 (field1, field3) VALUES (5,10)
quelle
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
quelle
Um die Standardwerte einzufügen, sollten Sie sie wie folgt weglassen:
Insert into Table (Field2) values(5)
Alle anderen Felder haben null oder ihre Standardwerte, wenn sie definiert wurden.
quelle
CREATE PROC SP_EMPLOYEE --By Using TYPE parameter and CASE in Stored procedure (@TYPE INT) AS BEGIN IF @TYPE=1 BEGIN SELECT DESIGID,DESIGNAME FROM GP_DESIGNATION END IF @TYPE=2 BEGIN SELECT ID,NAME,DESIGNAME, case D.ISACTIVE when 'Y' then 'ISACTIVE' when 'N' then 'INACTIVE' else 'not' end as ACTIVE FROM GP_EMPLOYEEDETAILS ED JOIN GP_DESIGNATION D ON ED.DESIGNATION=D.DESIGID END END
quelle