DEFAULT
es el valor que se insertará en ausencia de un valor explícito en una declaración de inserción / actualización. Supongamos que su DDL no tenía la NOT NULL
restricción:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault"
Entonces podrías emitir estas declaraciones
INSERT INTO tbl (A, B) VALUES (NULL, NULL);
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, DEFAULT);
INSERT INTO tbl (A, B, col) DEFAULT VALUES;
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, NULL);
Alternativamente, también puede usar DEFAULT
en UPDATE
declaraciones, de acuerdo con el estándar SQL-1992 :
UPDATE tbl SET col = DEFAULT;
UPDATE tbl SET col = NULL;
Tenga en cuenta que no todas las bases de datos admiten todas estas sintaxis estándar de SQL. Agregar la NOT NULL
restricción provocará un error con las declaraciones 4, 6
, mientras que 1-3, 5
aún sean declaraciones válidas. Entonces, para responder a su pregunta: No, no son redundantes.
Incluso con un valor predeterminado, siempre puede anular los datos de la columna con
null
.La
NOT NULL
restricción no le permitirá actualizar esa fila después de que se creó connull
valorfuente
Mi profesor de SQL dijo que si especificas tanto un
DEFAULT
valor comoNOT NULL
oNULL
,DEFAULT
siempre debe expresarse antesNOT NULL
oNULL
.Me gusta esto:
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
fuente
Yo diría que no.
Si la columna acepta valores nulos, entonces no hay nada que le impida insertar un valor nulo en el campo. Hasta donde yo sé, el valor predeterminado solo se aplica en la creación de una nueva fila.
Sin un conjunto nulo, no puede insertar un valor nulo en el campo, ya que arrojará un error.
Piense en ello como un mecanismo a prueba de fallos para evitar nulos.
fuente