Normally, errors occur for data-change statements (such as
UPDATE) that would violate
primary-key, unique-key, or foreign-key constraints. If you
are using a transactional storage engine such as
InnoDB, MySQL automatically rolls back the
statement. If you are using a nontransactional storage engine,
MySQL stops processing the statement at the row for which the
error occurred and leaves any remaining rows unprocessed.
MySQL supports an
IGNORE keyword for
UPDATE, and so forth. If you
use it, MySQL ignores primary-key or unique-key violations and
continues processing with the next row. See the section for
the statement that you are using (Section 13.2.5, “INSERT Syntax”,
Section 13.2.11, “UPDATE Syntax”, and so forth).
You can get information about the number of rows actually
inserted or updated with the
mysql_info() C API function.
You can also use the
WARNINGS statement. See
Section 126.96.36.199, “mysql_info()”, and
Section 188.8.131.52, “SHOW WARNINGS Syntax”.
InnoDB tables support foreign keys.
See Section 14.11.7, “InnoDB and FOREIGN KEY Constraints”.