MySQL 5.5 Reference Manual

17.1.2.3. Safe and Unsafe Statements for Row-Based Logging and Replication

When speaking of the “safeness” of a statement in
MySQL Replication, we are referring to whether a statement and
its effects can be replicated correctly using statement-based
format. If this is true of the statement, we refer to the
statement as safe; otherwise, we refer to
it as unsafe.

Handling of safe and unsafe statements.
A statement is treated differently depending on whether the
statement is considered safe, and with respect to the binary
logging format (that is, the current value of
binlog_format).

No distinction is made in the treatment of safe and unsafe
statements when the binary logging mode is
ROW.

If the binary logging format is MIXED,
statements flagged as unsafe are logged using the row-based
format; statements regarded as safe are logged using the
statement-based format.

If the binary logging format is
STATEMENT, statements flagged as being
unsafe generate a warning to this effect. (Safe statements
are logged normally.)

Accesses or references self-logging tables.
All reads and writes to self-logging tables are considered
unsafe. Within a transaction, any statement following a
read or write to self-logging tables is also considered
unsafe.