2012-01-08 18 views
36

Tengo una tabla como la siguiente:¿Cómo insertar valores predeterminados en la tabla SQL?

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

quiero insertar una fila que tiene los valores por defecto para campo2 y campo4.

He intentado insert into table1 values (5,null,10,null) pero no funciona y ISNULL(field2,default) tampoco funciona.

¿Cómo puedo decirle a la base de datos para utilizar el valor predeterminado de la columna al insertar una fila?

+2

ver también [esta cuestión] (http://stackoverflow.com/questions/25900996) para el caso en el que * todos * columnas tienen valores por defecto. – stakx

Respuesta

52
Sólo

no incluya las columnas en las que desea usar el valor predeterminado en su instrucción de inserción. Por ejemplo:

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

... tomará los valores predeterminados para field2 y field4, y asignar a 5 y 10 a field1field3.

+1

¿Qué sucede si la columna no tiene valores predeterminados definidos y también está configurado en "NO PERMITIR NULLS"? – Danon

4

Inténtelo como esto

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

Entonces campo2 y campo4 deben tener valores por defecto.

2

Si las columnas no deben contener NULL valores, tiene que definir las columnas como NOT NULL así, de lo contrario la aprobada en NULL se utilizará en lugar de la predeterminada y no se producirá un error.

Si usted no pasa en cualquier valor a estos campos (que requiere que se especifique los campos que hacen quieras usar), se utilizarán los valores por defecto:

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

Para insertar los valores por defecto se debe a omitir algo como esto:

Insert into Table (Field2) values(5) 

Todos los demás campos tendrán valores nulos o su defecto si se ha definido.

97

La mejor práctica que a la lista de sus columnas por lo que es independiente de los cambios de mesa (nueva columna o orden de las columnas, etc.)

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

Sin embargo, si usted no quiere hacer esto, utilice la palabra clave DEFAULT

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

¡Impresionante! Esto es exactamente lo que estaba buscando.Nota: también puede especificar las columnas y valores, pasando DEFAULT en lugar de NULL y obtendrá el valor predeterminado si hay una restricción DEFAULT, o NULL si la columna es nulable y no se especifica ninguna restricción predeterminada. – 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

No creo que esto sea una respuesta. –

4

La mejor manera es:

insert your_table 
default values 
+0

Esto funciona si todas las columnas tienen valores predeterminados asociados y uno no desea especificar los nombres de las columnas. – umbersar

0

Se puede escribir de esta manera

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 
Cuestiones relacionadas