MySQL でテーブルを作成しました。
CREATE TABLE actions ( A_id int NOT NULL AUTO_INCREMENT,
type ENUM('rate','report','submit','edit','delete') NOT NULL,
Q_id int NOT NULL,
U_id int NOT NULL,
date DATE NOT NULL,
time TIME NOT NULL,
rate tinyint(1),
PRIMARY KEY (A_id),
CONSTRAINT fk_Question FOREIGN KEY (Q_id) REFERENCES questions(P_id),
CONSTRAINT fk_User FOREIGN KEY (U_id) REFERENCES users(P_id));
これにより、必要なテーブルが正常に作成されました (ただし、「DESCRIBE actions;」コマンドを実行すると、外部キーが MUL 型のキーであることがわかりましたが、これが何を意味するのかわかりません)。ただし、質問テーブルまたはユーザー テーブルに存在しない Q_id または U_id を入力しようとすると、MySQL はこれらの値を許可します。
私は何を間違えましたか?外部キーを持つテーブルが無効なデータを受け入れないようにするにはどうすればよいですか?
更新 1
最後に追加TYPE=InnoDB
すると、エラーが発生します。
エラー 1005 (HY000): テーブル './quotes/actions.frm' を作成できません (errno: 150)
なぜそれが起こるのでしょうか?
更新 2
機能的な外部キーを使用してデータの整合性を確保することが重要であると言われましたが、MySQL では InnoDB を使用しないでください。おすすめは何ですか?