私は非常にMySQL初心者です。ちょうど2,3日前に始まったばかりです。私の宿題のために、MySQLは単純化のためMyISAMにデフォルト設定されており、私はMySQLでの練習のための病院のサンプルデータベースを作成しました。MySQLの子(Tb1)の親(Tb2)でもある親テーブル(Tb2)の子テーブル(Tb1)にデータを挿入する方法は?
私自身の目的で、InnoDBがMyISAMと比較して実際にFKを強制するいくつかの調査では、デフォルトのInnoDBに切り替えて、MyISAMで宿題と同じデータベースを再作成しようとしました。
そして問題は、私の「病棟」テーブルは以下の通りです、トラックのように私をフラフラ:
create table Ward
(Code varchar(1) primary key not null,
Name varchar(15) not null,
Consultant varchar(3) not null);
alter table ward
add foreign key (Consultant)
references Doctor(ID);
と私の医師テーブルはこのように書き:この後
create table Doctor
(ID varchar(3) primary key not null,
Name varchar(15) not null,
Ward varchar(1) not null);
alter table doctor
add foreign key (Ward)
references Ward(Code);
、私が試しましたどちらかのテーブルにデータを入力すると、「病棟」テーブルと「医師」テーブルにそれぞれデータを入力しようとすると、次のエラーが表示されました。
エラー1452(23000):子行を追加または更新できません:外部キー の制約が失敗します(
hospital
)。ward
、CONSTRAINTward_ibfk_1
FOREIGN KEY(Consultant
)がdoctor
(ID
)を参照)ERROR 1452(23000):子行を追加または更新できません:外部キー 制約が失敗した(
hospital
をdoctor
、CONSTRAINTdoctor_ibfk_1
FOREIGN KEY。 (Ward
は)私はテーブルのいずれかにデータを入力するにはどうすればよいward
(Code
))
を参照していますか?
ありがとうございました。
答えをいただきありがとうございます。私はそのようにします。 しかし、余分な情報については、実生活のようなFKループがありますか?出来ますか? – Tomm
私は分かりません。私は「外国の鍵」を使用しません。代わりに私はインデックスを使用し、私のコードで "外部キー制約"に違反しないことを確認します。 –