foreign key制約

子テーブルが管理テーブルにforeign key制約をはっていて、管理テーブルには、
子テーブルからforeign keyが張られている、キーのレコードが複数存在する場合、
InnoDBではその一つレコードのキーが存在する場合でも外部キー制約違反が起こる。

http://dev.mysql.com/doc/refman/5.1/ja/innodb-foreign-key-constraints.html

SQL スタンダードからの逸脱:InnoDB は同じ参照キー値を持つ親テーブル内にいくつかの行があると、外部キーチェック内で同じキー値を持つ別の親行がまるで存在しないかのように機能します。例えば、もし RESTRICT タイプ制約を定義し、いくつかの親行を持つ子行があれば、InnoDB はそれらの親行の削除を許可しません。

あと子テーブルからforeign keyを設定する際、そのforeign keyの名前を宣言しないと、自動で名前がつけられる。
alter tableでforeign keyを削除する際、その名前を指定しないとsqlがエラーになる。

ALTER TABLE `table_name` DROP FOREIGN KEY `key_name`;

key_nameがそれにあたる。
キー名はshow create table文で確認することができる。