我当时正准备使用PHPMyAdmin创建一个网站,但遇到一个问题:我不明白为什么我的代码会执行我不想要的事情。
这是创建表和一些随机条目的代码:
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行。任何帮助都是很好的。
祝你有个愉快的一周。
最佳答案
您的最终插入内容失败,因为它引用了prof
ID为4的教授,该教授在prof
表中不存在。
如果仔细查看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)
);
字段
prof
是prof
表中的外键。 MySQL将要求该字段引用实际存在的教授。对于最终插入,情况并非如此。要解决此错误,您可以创建这样的教授,例如insert into Prof values
(4, 'M');
您没有在问题中报告错误,对我来说似乎是错误的。也许您没有提到它,或者您的错误报告由于某种原因而被关闭。