2017-08-01 7 views
0

PHPMyAdminを使用してウェブサイトを作成する準備をしていましたが、私は問題に気付きました。MySQLテーブルに項目を追加する

これは、テーブルといくつかのランダムなエントリを作成するためのコードです:

create table stud (
    matrnr int primary key, 
    pname Varchar(30) not null 
); 

create table prof (
    persnr int primary key, 
    pname Varchar(50) not null 
); 

create table vorl (
    vorlnr int primary key, 
    titel varchar(50), 
    prof int references prof(persnr) on delete set null 
); 

create table prüfen (
    stud int references stud(matrnr) on delete cascade, 
    vorl int references vorl(vorlnr), 
    prof int references prof(persnr) on delete set null, 
    note float, 
    primary key(Stud, vorl) 
); 

insert into stud values 
(1, 'G'), 
(2, 'F'), 
(3, 'C'); 

insert into Prof values 
(1, 'M'), 
(2, 'L'), 
(3, 'M'); 

insert into vorl values 
(1, 'Info1', 'M'), 
(1, 'Info2', 'L'), 
(1, 'Info3', 'M'); 

insert into prüfen values 
(1, 1, 1, 2.0), 
(1, 2, 1, 1.7), 
(2, 3, 2, 2.3); 

私は

Insert into prüfen values (3, 1, 4, 2.0); 

を試してみましたが、まだテーブルprüfenで唯一の3行だったこの位置で。

どんな助力もウェルカムです。 良い週を過ごしてください。

答えて

0

profテーブルに存在しないprof IDの教授を参照しているため、最後の挿入が失敗しました。

あなたがprüfenテーブルのためのあなたの定義をよく見ると、これがより明確になります。

create table prüfen (
    stud int references stud(matrnr) on delete cascade, 
    vorl int references vorl(vorlnr), 
    prof int references prof(persnr) on delete set null, 
    note float, 
    primary key(Stud, vorl) 
); 

フィールドprofprofテーブルへの外部キーです。 MySQLは、このフィールドが実際に存在する教授を参照することを要求します。あなたの最終的な挿入物の場合はありません。このエラーを回避するには、そのような教授を作成することができます。

insert into Prof values 
(4, 'M'); 

あなたの質問にはエラーは報告されていませんが、それは私には見えません。たぶんあなたはそれに言及しなかったかもしれません、または何らかの理由であなたのエラー報告がオフになっているかもしれません。

+0

エラーが表示されることはありませんか? OPはエラーについて何も言わなかった。 –

+0

@RickSはい、どこでもエラーが発生すると思います。たぶんOPに言及しなかったか、おそらく彼のエラー報告が無効になっているかもしれません。私の説明だけが現時点で気になるものです。 –

+0

さて、どうもありがとうございました。今私は実際に何が起こっていたのか理解しています。私はそれをreajustedので今それは正常に動作しています。どうもありがとうございました ;) –

関連する問題