Tiene sentido poner NOT NULL y default en una misma columna? Porque segun entendido NOT NULL no permite que enviamos el dato de la column...

Ivan Sevilla

Ivan Sevilla

Pregunta
studenthace 5 años

Tiene sentido poner NOT NULL y default en una misma columna? Porque segun entendido NOT NULL no permite que enviamos el dato de la columna vacío, entonces para que serviría dejar un dato como default si no lo vamos a usar. Es asi? o como funciona?

3 respuestas
para escribir tu comentario
    Cono Damian Pereyra Santana

    Cono Damian Pereyra Santana

    studenthace 5 años

    Si tiene sentido, a continuación te mencionare un ejemplo practico:

    Escenario: Supongamos que tengo un sistema de emisión de facturas automáticas y a su vez cuento con un ABM que me permite generarlas de manera manual (para el caso de aquellas que no pasan por la facturación automática).

    En ambos casos es mandatario completar la fecha de la factura, ya que en algún momento la misma se emitió y seria una inconsistencia si no contase con ese dato.

    Caso de uso 1 - En el sistema automático, la factura se emite en tiempo real por consiguiente no es necesario determinar la fecha de facturación ya deberá tomar la fecha del día actual, para ello impacta el valor default de la tabla y no lo debería mencionar en la sentencia insert.

    INSERT INTO 'facturas' ('monto','cliente') VALUES ('175.45',3)

    Caso de uso 2 - En el ABM de carga manual me permite cargar facturas con cualquier fecha... que puede ser la actual como de días anteriores... la única salvedad es que SI o SI es necesario la carga de dicho valor ya que es mandatario según la definición del escenario, asi que en este caso si sera necesario la mención de la columna.

    INSERT INTO 'facturas' ('monto','cliente','fecha') VALUES ('200.50',1,'2020-08-21')

    Conclusión: Para este ejemplo es necesario que la columna fecha este definida con valor por default y al mismo tiempo sea NOT NULL, ya que previene un hipotetico insert de este formato

    INSERT INTO 'facturas' ('monto','cliente','fecha') VALUES ('200.50',1,NULL)

    que según el caso es una restricción del escenario.

    Osvaldo Garcia

    Osvaldo Garcia

    studenthace 5 años

    si.

    por ejemplo cuando estas programando un crud y necesitas hacer inserciones, hay valores que no se pueden simplemente desechar, como el estatus de algo. Asi que es muy conveniente tener un valor por default cuando existen estos casos y el usuario no "inserta" los valores correspondientes, previniendo el error del not null.

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.

Curso de SQL y MySQL desde Cero ► Empieza Gratis
Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.