Un valor por default -o por omisión- es aquel valor que se le dará a un campo si al momento de insertar su registro no se le da un valor específico.
Suponiendo que existe un campo Sexo (de 1 caracter con valores posibles ‘M’ y ‘F’) se podría definir el campo conun valor por default de ‘F’ si se trata de un campo en una tabla de pacientes de un ginecólogo, es decir, la gran mayoría (si no es que todos) los registros en la tabla de pacientes serán de mujeres. Por el contrario, el mismo campo en una tabla de clientes de una tienda de abarrotes quizá no requiera un valor por default en caso de que no haya mayoría de clientes de un sexo sobre el otro.
Otro ejemplo sería que se trate de un alumno en una escuela, quizá se quiera poner en su estatus que está inscrito. Ya después se podrá cambiar a Dado de baja, Suspendido, etc., pero en un inicio, todo alumno entra como alumno inscrito (no tendría sentido dar de alta un alumno y suspenderlo en ese mismo momento).
El valor por default de un campo tiene que ser del mismo tipo de dato que el campo. Esto quiere decir que si un campo en numérico, entonces el valor por default tiene que es un número; y si el campo es de tipo fecha, el valor por default tiene que ser de este mismo tipo de dato.
Ejemplo de valores por default en CREATE TABLE
CREATE TABLE peliculas ( clave smallint PRIMARY KEY, --LLave primaria titulo varchar(100) NOT NULL, --No permite valores nulos director varchar (100) NULL, --Si permite valores nulos genero varchar(100) NULL, --Si permite valores nulos anoEstreno smallint DEFAULT 2000 NULL CHECK (anoEstreno > 1900), --Si permite valores nulos, por default es 2000 y solo permite valores mayores a 1900 anoGrabacion smallint NULL, --Si permite valores nulos anoEdicion smallint NULL, --Si permite valores nulos clasificacion varchar(20) NULL DEFAULT 'A', --Si permite valores nulos y el default es 'A' protagonistas varchar (300) NULL DEFAULT '',--Si permite valores nulos y el default es una cadena vacía CONSTRAINT unique_tituloUnico UNIQUE (titulo,anoEstreno) );
En el ejemplo anterior, los campos anoEstreno, clasificacion y protagonistas tendrán un valor por default si al dar de alta el registro en la tabla peliculas no se asigna un valor explícito para esos campos. En el caso de anoEstreno el valor será de 2000, en clasificacion será una letra A y en protagonistas tendrá una cadena vacío (que es diferente a un valor nulo).
Como se ve en el ejemplo, se pueden combinar otras restricciones (NULL y CHECK por ejemplo) junto con DEFAULT. Un ejemplo se puede ver adelante:
En este caso, a pesar de que no se proporciona valores para anoEstreno y para clasificacion, después de ejecutar un INSERT, estos dos campos tienen los valores por default (2000 y ‘A’ respectivamente).
Cambio de valor por default con ALTER TABLE
En el caso de que ya exista la tabla, es posible cambiar un valor por default con el comando ALTER TABLE. Esto se realiza de la siguiente manera:
ALTER TABLE nombredetabla ADD DEFAULT valorpordefault FOR nombredecampo;
En el caso de la tabla anterior, se podría añadir un valor por default en el campo de anoGrabacion de 2001 con el siguiente comando ALTER TABLE
ALTER TABLE peliculas ADD DEFAULT 2001 FOR anoGrabacion;