2011-09-12 21 views
-3

誰もが両方のテーブルはInnoDBのあることを確認して、外部キー

+0

はそんなに持っている何をすることができます遠い? –

+1

[ドキュメント](http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html)をチェックしましたか? –

+0

私はこのクエリ "ALTER TABLE tbl_businessalbumを追加しました。fk_1 FOREIGN KEY(businessId)を参照してください。参考tbl_business(id)ON DELETE CASCADE" MyISAM。クエリは正常に実行されます。MyISAMエンジンは外部キーDELETE CASCADEプロパティ(http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-foreign-keys.html)を処理しません。 –

答えて

1

第一のタイプのテーブルのための「ON DELETE CASCADEを」「のInnoDB」で外部キーを追加する方法を知っています。 createステートメントがInnoDBを示していても、このエンジンがインストールされていないと、MySQLは代わりにMyISAMを使用します。実際にInnoDBであるかどうかを確認してください。

次に、両方の列がまったく同じ型であることを確認します(たとえば、一方がint(11)で、他方がint(11)でない場合は、外部キーを作成できません)。参照しているカラム(ケースのbussinessテーブルのid)にユニークインデックスがあることを確認します(MySQLはインデックス付きカラムを使用できますが、ユニークインデックスを使用することをお勧めします)。それがプライマリキーであれば、すでにユニークインデックスを持っています。

次に、ドキュメントによると、文を実行し、他のユーザーが指摘したように:あなたは外部キーを追加することができない場合

ALTER TABLE yourtable ADD FOREIGN KEY xyzkey (field) REFERENCES foreigntable (foreignfield) ON DELETE CASCADE;

、あなたはcreate trigger instead