私のテーブルに外部キーが設定されていると思っていましたが、DDLに正しい構文があっても、事実の後に制約を追加しようとしても何も起こりません。私はすべてのエラーを取得しない、と私は'10行を示すメッセージ(s)は影響を受けたレコードを取得:10の重複:0警告:ここでは0'MySQLの外部キーが作成されていない
が私のテーブルの定義です:
CREATE TABLE USERS_COURSES (
USERS_COURSES_ID INT NOT NULL AUTO_INCREMENT,
USER_ID INT NOT NULL,
COURSE_ID INT NOT NULL,
ROLE INT NOT NULL,
CONSTRAINT PK_USERS_COURSES PRIMARY KEY (USERS_COURSES_ID),
CONSTRAINT U_USERS_COURSES UNIQUE (USER_ID, COURSE_ID),
CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID),
CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID)
);
私は、MySQL Workbenchで、テーブルを見て、とのIntelliJ IDEAを経て、私が見るすべてが単一のインデックスはFK_USERS_COURSES_COURSES (COURSE_ID)
と呼ばれる私が好きなように私は何回で次のコマンドを実行することができ、かつapparnetly何も起こりません:
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID);
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID);
をここでは3210
は、私はIntelliJの中に私の[データベース]タブに表示するものである。
これを引き起こしている可能性がありますか?私は削除を防ぐために外部キーが必要です、そして、今これは起こっていません。
https://dev.mysql.com/doc/refman/5.7/en/using-innodb-tables .html innodbエンジン(CREATE TABLE ... ENGINE = InnoDB)を使用していることを確認してください。それ以外の場合、外部キーは構文的に受け入れられますが、実装されません。 – Mike
@Mikeそれは答えでした。あなたが答えをしたいなら、私はそれを受け入れるでしょう。 – agent154
ありがとうございます。完了しました。ちょうど私があなたがすでにチェックしていた地面をカバーしていないことを確認したいと思っていた(それ以外の場合、私は何も持っていなかっただろう!) – Mike