Como usar now() como default sobre campo datetime en Mysql

By | 2010/01/06

Una de las limitantes que posee Mysql 5.1 es la capacidad de utilizar funciones como valores default en los campos. Esto incluye la función now().

Por esta razón si se crea una tabla con un campo tipo datetime y se especifica now() como default se recibirá un error como el siguiente “invalid default value for ‘xxx’

La única solución que he podido encontrar es la siguiente:

Para un escenario con una tabla llamada usuarios_bitacora con un campo datetime llamado usbi_fecha_ingreso, debemos crear un trigger de esta forma:

CREATE TRIGGER login_usuario BEFORE INSERT ON `usuarios_bitacora`
FOR EACH ROW SET NEW.usbi_fecha_ingreso = NOW();

Esto hará que cada registro tenga now() como valor predeterminado.

4 thoughts on “Como usar now() como default sobre campo datetime en Mysql

  1. Chichano

    Gracias! esto era lo que creía cuando busque en google pero quería estar seguro. Saludos

  2. Dunderio

    Chichano,
    La verdad es muy frustrante que no se pueda hacer directamente pero por lo menos existe una alternativa.
    Saludos…

  3. Erzengel

    Gracias por el aporte, diste en el clavo amigo

  4. iliana

    Hola gracias pero me arrojo este error: This version of MySQL doesn’t yet support ‘multiple triggers with the same action time and event for one table’ Mysql server version 5.0.51a

Leave a Reply

Your email address will not be published. Required fields are marked *

This blog is kept spam free by WP-SpamFree.