MySQL 5 "Strict" Mode
MySQL 5 "strict " mode applies when either STRICT_TRANS_TABLES or STRICT_ALL_TABLES is included in the list of
options supplied to the sql_mode
configuration variable. STRICT_ALL_TABLES will cause any attempt to
set a column to an invalid value to fail with an error. STRICT_TRANS_TABLES has the same effect, but
only if the table is transactional.
If neither of these settings is in effect, MySQL will either accept the update or do a "best fit" of the invalid value into a legal column value. For instance, if you try to assign a string value into an integer column, MySQL may set the value of the column to 0. A warning will be generated whenever such a "truncation" occurs.
Strict mode will also cause errors to occur for missing columns
in an INSERT statement, unless that
column has an associated DEFAULT
clause.
STRICT_ALL_TABLES can have
some dubious side effects when you are performing multirow updates or
inserts into nontransactional tables. Because there is no rollback
capability for a nontransactional table, the error may occur after a
certain number of valid row updates have occurred. This means that in
the event of a strict-mode error on a nontransactional table, the SQL
statement may partially succeed. This is rarely desirable behavior,
and for this reason the default setting in MySQL 5.0 is STRICT_TRANS_TABLES.
You can change your strict mode at any time with a SET statement:
SET sql_mode='STRICT_ALL_TABLES'
The strict mode also determines how stored programs ...