Inicio Foros Bases de datos MySQL Incrementar columna numérica cuando es null la primera vez en MySQL

  • Este debate tiene 1 respuesta, 2 mensajes y ha sido actualizado por última vez el hace 4 meses por alonsojpd.
Viendo 2 entradas - de la 1 a la 2 (de un total de 2)
  • Autor
    Entradas
  • #43505
    Varios
    Moderador

    Hola, tengo una tabla donde una de las columnas es de tipo INT (contador), tal que así:

    CREATE TABLE usuario (
    codigo int(10) unsigned NOT NULL AUTO_INCREMENT,
    nick varchar(20) DEFAULT NULL,
    contrasena varchar(100) DEFAULT NULL,
    tipo varchar(30) DEFAULT NULL,
    nombre varchar(100) DEFAULT NULL,
    fecha datetime DEFAULT NULL,
    contador int(11) DEFAULT NULL,
    PRIMARY KEY (codigo)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC

    Lo que quiero es, desde una consulta SQL, poder incrementar el valor del campo «contador». Lo hago así:

    update usuario set
    contador = contador + 1
    where codigo = 3;

    Pero no funciona. Si pongo manualmente el contador con un número, entonces sí funciona, pero cuando es null (al principio), no funciona ¿cómo puedo solucionar esto?

    #43506
    alonsojpd
    Superadministrador

    Hola, tienes varias opciones. Una de ellas es en la tabla cambiar el DEFAULT del campo «contador», que ahora lo tienes a NULL por cero (0). De esta forma, cuando se cree un registro en la tabla usuario, el contador cogerá el valor 0 en lugar de null y te funcionará con la SQL que nos has indicado.

    En el caso de que no puedas modificar la tabla, otra opción, quizá la más «elegante» es usar COALESCE, de la siguiente forma:

    update usuario set
    contador = COALESCE(contador, 0) + 1 + 1
    where codigo = 3;

    Con COALESCE te funcionará perfectamente aunque el campo «contador» tenga valor NULL.

Viendo 2 entradas - de la 1 a la 2 (de un total de 2)
  • Debes estar registrado para responder a este debate.