¿Qué es default en MySQL?
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 mediante DEFAULT <valor> por lo tanto valor debe ser una constante, se dice que un valor por defecto es explícito.
Por lo tanto si un campo no contiene definido un valor por defecto entonces MySQL no define como la siguientes maneras
Por lo tanto si un campo no contiene definido un valor por defecto entonces MySQL no define como la siguientes maneras
- Si el campo soporta el valor NULL, se lo define con un DEFAULT NULL explícito.
- Mysql <= 4.1: Define el campo con un DEFAULT explícito usando el valor implícito según el tipo de dato del campo.
- Mysql>=5.o.2: Define el campo sin un Default explícito y se necesario evaluar la forma en que se agregan y modifican registros
- Excepción: Si el campo es parte de una clave primaria pero no es explícitamente NOT NULL, Mysql lo crea como NOT NULL pero asignando un DEFAULT con el valor implícito según el tipo de datos. Si queremos evitar esto último, debemos incluir un NOT NULL explícito en la definición de cualquier campo de una clave primaria.
SHOW CREATE TABLE <NOMBRE_TABLA>
- Si el campo se define como not null(no soporta el valor null),depende de la versión de MySQL
Agregar y modificar registros en Mysql >= 5.02
Cuando se intenta hacer un INSERT o REPLACE sin un valor para el campo, o un UPDATE con NULL, Mysql trata el caso según el modo:
- Si está activado el modo estricto
- La tabla es transaccional: se genera un error y se revierte la acción
- La tabla no es transaccional: se genera un error pero si sucede en la segunda fila o posteriores de una sentencia que afecta a varias filas múltiple, las previas se habrán insertado!
- Si NO está activado el modo estricto: MySQL establece el valor implícito según el tipo de dato del campo.
Valores implícitos según el tipo de campo
- Textos:
- ENUM: El primer valor
- BLOB: No puede tener un valor por defecto
- TEXT: No puede tener un valor por defecto
- Cadenas de caracteres (variantes de CHAR y BINARY): ” cadena vacía
- Numérico (variantes de INT, FLOAT, DOUBLE, DECIMAL, NUMERIC): 0
- Excepción si son INT o FLOAT con auto_increment: próximo valor en la secuencia
- Fechas y horas: el valor “cero” según el tipo
- DATE: 0000-00-00
- TIME: 00:00:00
- DATETIME: 0000-00-00 00:00:00
- YEAR: 0000
- Mysql >= 5.6.6 con explicit_defaults_for_timestamp
- TIMESTAMP: 0000-00-00 00:00:00
Figura 12. Como insertar datos con tiempo y fecha.
Fuentes: