MySQL set current date in a DATETIME field on insert

后端 未结 4 1679
迷失自我
迷失自我 2020-12-13 19:55

I have a \'created_date\' DATETIME field which I would like to be populated with the current date upon insert. What syntax should I use for the trigger for this? This is wha

相关标签:
4条回答
  • 2020-12-13 20:02

    Since MySQL 5.6.X you can do this:

    ALTER TABLE `schema`.`users` 
    CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
    

    That way your column will be updated with the current timestamp when a new row is inserted, or updated.

    If you're using MySQL Workbench, you can just put CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP in the DEFAULT value field, like so:

    http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html

    0 讨论(0)
  • 2020-12-13 20:04

    Your best bet is to change that column to a timestamp. MySQL will automatically use the first timestamp in a row as a 'last modified' value and update it for you. This is configurable if you just want to save creation time.

    See doc http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

    0 讨论(0)
  • 2020-12-13 20:10
    DELIMITER ;;
    CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
    BEGIN
        SET NEW.created_date = NOW();
    END;;
    DELIMITER ;
    
    0 讨论(0)
  • 2020-12-13 20:14

    Using Now() is not a good idea. It only save the current time and date. It will not update the the current date and time, when you update your data. If you want to add the time once, The default value =Now() is best option. If you want to use timestamp. and want to update the this value, each time that row is updated. Then, trigger is best option to use.

    1. http://www.mysqltutorial.org/sql-triggers.aspx
    2. http://www.tutorialspoint.com/plsql/plsql_triggers.htm

    These two toturial will help to implement the trigger.

    0 讨论(0)
提交回复
热议问题