How do you set a default value for a MySQL Datetime column?

后端 未结 26 2229
野的像风
野的像风 2020-11-22 01:55

How do you set a default value for a MySQL Datetime column?

In SQL Server it\'s getdate(). What is the equivalant for MySQL? I\'m using MySQL 5.x if tha

26条回答
  •  鱼传尺愫
    2020-11-22 02:40

    For me the trigger approach has worked the best, but I found a snag with the approach. Consider the basic trigger to set a date field to the current time on insert:

    CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
        FOR EACH ROW SET NEW.dateAdded = NOW();
    

    This is usually great, but say you want to set the field manually via INSERT statement, like so:

    INSERT INTO tblMyTable(name, dateAdded) VALUES('Alice', '2010-01-03 04:30:43');
    

    What happens is that the trigger immediately overwrites your provided value for the field, and so the only way to set a non-current time is a follow up UPDATE statement--yuck! To override this behavior when a value is provided, try this slightly modified trigger with the IFNULL operator:

    CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
        FOR EACH ROW SET NEW.dateAdded = IFNULL(NEW.dateAdded, NOW());
    

    This gives the best of both worlds: you can provide a value for your date column and it will take, and otherwise it'll default to the current time. It's still ghetto relative to something clean like DEFAULT GETDATE() in the table definition, but we're getting closer!

提交回复
热议问题