私はユニークインデックスと外部インデックスを持つテーブルを作成しました。私がユニークなキーを追加すると、MySQLからの成功応答が得られます。その後、私は外来のキーを追加すると、私はまた、成功の応答を取得します。ここで私が作成した外部キーインデックスが表示されません
は、外部キーを追加するためのSQLです:
ALTER TABLE `rewards_customer_index_points`
ADD CONSTRAINT FOREIGN KEY FK_CUSTOMER_INDEX_POINTS_CUSTOMER_ID( `customer_id`)
REFERENCES `customer_entity` ( `entity_id`)
ON DELETE CASCADE
ON UPDATE CASCADE
しかし、私はテーブルの上にその外部キーが表示されませんので、それが正常に作成されていないように思えます。しかし、間違いなくそこにあるのは、参照されたcustomer_entityレコードを削除するとカスケードが動作することです。
なぜインデックスリストに表示されないのですか?どちらのテーブルもInnoDBです。ここで
がテーブルの上にテーブル構造とキーです:MySQL
土地で
mysql> explain rewards_customer_index_points;
+-----------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+-------------------+-----------------------------+
| index_points_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| customer_id | int(10) unsigned | NO | MUL | NULL | |
| status | int(11) | NO | | 0 | |
| points_positive | int(11) | NO | | NULL | |
| points_negative | int(11) | NO | | NULL | |
| updated_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------------+------------------+------+-----+-------------------+-----------------------------+
show index from rewards_customer_index_points;
+-------------------------------+------------+------------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------------------+------------+------------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| rewards_customer_index_points | 0 | PRIMARY | 1 | index_points_id | A | 2 | NULL | NULL | | BTREE | | |
| rewards_customer_index_points | 0 | idx_customer_id_status | 1 | customer_id | A | 2 | NULL | NULL | | BTREE | | |
| rewards_customer_index_points | 0 | idx_customer_id_status | 2 | status | A | 2 | NULL | NULL | | BTREE | | |
+-------------------------------+------------+------------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
おそらく、あなたのテーブルはInnoDBテーブルではありません。 参照:私はこれを含めるように計画していたhttp://stackoverflow.com/questions/8960418/foreign-key-between-mysql-innodb-tables-not-working-why/8960483#8960483 –
おかげローランド、申し訳ありません最初の投稿では忘れてしまったので、今編集しています。両方のテーブルは、実際にInnoDBです。 – kalenjordan
外部キーが作成されたかどうかを確認するためにSHOW CREATE TABLLEを実行してください。 –