Do not allow dropping a table referenced by a
FOREIGN KEY constraint, unless the user
does SET FOREIGN_KEY_CHECKS=0. The error
message here is somewhat misleading ``Cannot delete or
update a parent row...'', and must be changed in a future
version 4.1.x.
Make InnoDB to remember the
CONSTRAINT name given by a user for a
FOREIGN KEY.
Change the print format of FOREIGN KEY
constraints spanning multiple databases to
`db_name`.`tbl_name`. But when parsing
them, we must also accept
`db_name.tbl_name`, because that was the
output format in < 4.0.18.
An optimization in locking: If
AUTOCOMMIT=1, then we do not need to make
a plain SELECT set shared locks even on
the SERIALIZABLE isolation level, because
we know that the transaction is read-only. A read-only
transaction can always be performed on the
REPEATABLE READ level, and that does not
endanger the serializability.
Implement an automatic downgrade from >= 4.1.1 ->
4.0.18 if the user has not created tables in
.ibd files or used other 4.1.x
features. Consult the
manual section on multiple
tablespaces carefully if you want to downgrade!
Fixed a bug : MySQL should not allow
REPLACE to internally perform an
UPDATE if the table is referenced by a
FOREIGN KEY. The MySQL manual states that
REPLACE must resolve a duplicate-key
error semantically with DELETE(s) +
INSERT, and not by an
UPDATE. In versions < 4.0.18 and <
4.1.2, MySQL could resolve a duplicate key conflict in
REPLACE by doing an
UPDATE on the existing row, and
FOREIGN KEY checks could behave in a
semantically wrong way. (Bug#2418)
Fixed a bug : generate FOREIGN KEY
constraint identifiers locally for each table, in the form
db_name/tbl_name_ibfk_number. If the user
gives the constraint name explicitly, then remember it.
These changes should ensure that foreign key id's in a slave
are the same as in the master, and DROP FOREIGN
KEY does not break replication. (Bug#2167)
Fixed a bug : allow quoting of identifiers in InnoDB's
FOREIGN KEY definitions with a backtick
(`) and a double quote ("). You can now use also spaces in
table and column names, if you quote the identifiers. (Bug#1725, Bug#2424)
Fixed a bug : FOREIGN KEY ... ON UPDATE/DELETE NO
ACTION must check the foreign key constraint, not
ignore it. Since we do not have deferred constraints in
InnoDB, this bugfix makes
InnoDB to check NO
ACTION constraints immediately, like it checks
RESTRICT constraints.
Fixed a bug : InnoDB crashed in
RENAME TABLE if
'db_name.tbl_name' is shorter than 5
characters. (Bug#2689)
Fixed a bug : in SHOW TABLE STATUS,
InnoDB row count and index cardinality
estimates wrapped around at 512 million in 32-bit computers.
Note that unless MySQL is compiled with the
BIG_TABLES option, they will still wrap
around at 4 billion.
Fixed a bug : If there was a UNIQUE
secondary index, and NULL values in that
unique index, then with the IS NULL
predicate, InnoDB returned only the first
matching row, though there can be many. This bug was
introduced in 4.0.16. (Bug#2483)
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
