Changing a Column’s Default Value

Problem

You want to leave a column definition alone except for the default value.

Solution

Use SET DEFAULT to specify the default value explicitly, or DROP DEFAULT to remove the current default and allow MySQL to assign the “default default.”

Discussion

A column’s default value is part of its definition, but can be modified separately from other aspects of the definition. To change a default value, use ALTER col_name SET DEFAULT:

ALTER TABLE mytbl ALTER j SET DEFAULT 1000;

Default values must be constants. For example, you cannot set the default for a date-valued column to NOW( ), although that would be very useful.

To drop a default value, use ALTER col_name DROP DEFAULT:

ALTER TABLE mytbl ALTER j DROP DEFAULT;

In this case, the column’s default value reverts to the standard default for the column type. For columns that can contain NULL values, this will be NULL. Otherwise, the general defaults are 0, the empty string, or the “zero” date or time for numeric, string, or date or time columns, respectively. (The exceptions are for AUTO_INCREMENT, ENUM, and TIMESTAMP columns, for which the defaults are the next sequence number, the first enumeration member, and the current date and time.)

Get MySQL Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.