2012-01-08 15 views
36

Ho una tabella come questa:Come inserire valori predefiniti nella tabella SQL?

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

voglio inserire una riga che ha i valori di default per campo2 e Campo4.

Ho provato insert into table1 values (5,null,10,null) ma non funziona e ISNULL(field2,default) non funziona neanche.

Come posso dire al database di utilizzare il valore predefinito per la colonna quando inserisco una riga?

+2

Vedi anche [questa domanda] (http://stackoverflow.com/questions/25900996) per il caso in cui * tutti * colonne hanno valori di default. – stakx

risposta

52
Proprio

non includere le colonne per le quali si desidera utilizzare il valore predefinito nella propria istruzione insert. Per esempio:

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

... avrà i valori predefiniti per field2 e field4, e assegnare a 5 field1 e 10 field3.

+1

Cosa succede se la colonna non ha definito i valori di default ed è anche impostata su "NOT ALLOW NULLS"? – Danon

4

Prova in questo modo

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

Poi campo2 e Campo4 dovrebbe avere valori di default.

2

Se le colonne non devono contenere NULL valori, è necessario definire le colonne come NOT NULL così, altrimenti il ​​passato in NULL verranno utilizzati al posto del default e non produrre un errore.

Se non si passa in qualsiasi valore a questi campi (che richiede di specificare i campi che si fanno desidera utilizzare), verranno utilizzati i valori di default:

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

Per inserire i valori predefiniti si dovrebbe omettere loro qualcosa di simile:

Insert into Table (Field2) values(5) 

Tutti gli altri campi avranno valori nulli o il loro default se si è definito.

97

migliore pratica alla lista le colonne in modo da essere indipendente dalle variazioni di tabella (nuova colonna o ordine delle colonne, ecc)

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

Tuttavia, se non si vuole fare questo, utilizzare la parola chiave DEFAULT

insert into table1 values (5, DEFAULT, 10, DEFAULT) 
+7

Fantastico! Questo e 'esattamente quello che stavo cercando.Nota: puoi anche specificare le colonne e i valori, passando DEFAULT anziché NULL e otterrai il valore predefinito se esiste un vincolo DEFAULT o NULL se la colonna è annullabile e non viene specificato alcun vincolo predefinito. – John

-2
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 
+1

Non penso che questa sia una risposta. –

4

Il modo migliore è:

insert your_table 
default values 
+0

Funziona se tutte le colonne hanno valori di default associati e uno non vuole specificare i nomi delle colonne. – umbersar

0

È possibile scrivere in questo modo

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 
Problemi correlati