The DEFAULT
clause in a data type specification indicates a default value
for a column. With one exception, the default value must be a
constant; it cannot be a function or an expression. This means,
for example, that you cannot set the default for a date column
to be the value of a function such as
value
NOW()
or
CURRENT_DATE
. The exception is
that you can specify
CURRENT_TIMESTAMP
as the default
for a TIMESTAMP
column as of
MySQL 4.1.2. See Section 10.3.1.2, “TIMESTAMP
Properties as of MySQL 4.1”.
If a column definition includes no explicit
DEFAULT
value, MySQL determines the default
value as follows:
If the column can take NULL
as a value, the
column is defined with an explicit DEFAULT
NULL
clause.
If the column cannot take NULL
as the value,
MySQL defines the column with an explicit
DEFAULT
clause, using the implicit default
value for the column data type. Implicit defaults are defined as
follows:
For numeric types, the default is 0
, with
the exception that for integer or floating-point types
declared with the AUTO_INCREMENT
attribute, the default is the next value in the sequence.
For date and time types other than
TIMESTAMP
, the default is the
appropriate “zero” value for the type. For the
first TIMESTAMP
column in a
table, the default value is the current date and time. See
Section 10.3, “Date and Time Types”.
For string types other than
ENUM
, the default value is
the empty string. For ENUM
,
the default is the first enumeration value.
BLOB
and
TEXT
columns cannot be assigned a
default value.
For a given table, you can use the SHOW
CREATE TABLE
statement to see which columns have an
explicit DEFAULT
clause.
SERIAL DEFAULT VALUE
in the definition of an
integer column is an alias for NOT NULL AUTO_INCREMENT
UNIQUE
.
User Comments
Add your own comment.