CURRENT_DATE Default Value Puzzle
In MySQL, attempting to set the default value for a DATE column to CURDATE() or CURRENT_DATE may seem like an intuitive choice. However, upon trying to create such a table, it fails to work. This question discusses why this behavior occurs.
The culprit lies in the limitations of MySQL's DEFAULT clause. As explained in the official documentation:
"The DEFAULT clause specifies a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression."
Therefore, assigning CURRENT_DATE, which is a function that retrieves the current date, as the default for a DATE column is not supported.
The Exception
The exception to this rule is the CURRENT_TIMESTAMP column type. For a TIMESTAMP column, you can specify CURRENT_TIMESTAMP as the default value to automatically populate the column with the current date and time.
Workaround
If you wish to preserve the current date and time in a DATE column, you can use a trigger to automatically update the field on insert and update operations.
The above is the detailed content of Why Can't I Set CURRENT_DATE as the Default Value for a MySQL DATE Column?. For more information, please follow other related articles on the PHP Chinese website!