Mysql SQL错误1452:无法添加或更新子项
这里FacID是外键,它是教员的主键 当我插入值时,我尝试插入此值Mysql SQL错误1452:无法添加或更新子项,mysql,sql-server,Mysql,Sql Server,这里FacID是外键,它是教员的主键 当我插入值时,我尝试插入此值 Create table Course(CourseID char(5),CourseDesc varchar(25),CourseType char(9),SemNo int(1),FacID char(4) default 0); alter table Course add primary key(CourseID); alter table Course add foreign key(FacID) references
Create table Course(CourseID char(5),CourseDesc varchar(25),CourseType char(9),SemNo int(1),FacID char(4) default 0);
alter table Course add primary key(CourseID);
alter table Course add foreign key(FacID) references Faculty1(FacID);
但是,这会产生sql错误1452,请解决它。您在插入中拼错了CourseID:
insert into Course(CouseID,CourseDesc,CourseType,SemNo,FacID) values ('EE025','Digital Logic Circuits','Theory','4','');
应该是:
insert into Course(CouseID,CourseDes...
您是否确认在
Faculty1
中有一行FacID=0
insert into Course(CourseID,CourseDes...
如果要插入空白值(
'
),则需要在Faculty1.FacID
中具有空字符串值。否则,您可以正确地指示'0'
insert into Faculty1 (FacID /* other columns */) values (0 /*, other values*/ );
insert into Course(CourseID,CourseDesc,CourseType,SemNo,FacID) values ('EE025','Digital Logic Circuits','Theory',4,0);
rextester演示:您能试着在教员表中查看FacID值,并输入FacID值中的任何值,而不是将“”放在那里吗?添加如下内容:插入课程(CouseID、CourseDesc、CourseType、SemNo、FacID)值('EE025'、'Digital Logic Circuits'、'Theory'、'4'、'G');其中“G”在教员表的FacId列中。这是mysql还是sql server?没有教员id引用它,它有(null)value@rajesh用一个例子和演示更新了我的答案。
create table Faculty1(
FacID char(4) not null primary key
);
insert into faculty1 values (0);
create table Course(
CourseID char(5) not null
, CourseDesc varchar(25)
, CourseType char(9)
, SemNo int
, FacID char(4) not null default 0
/* specify not null to use default when value not inserted */
);
alter table Course add primary key(CourseID);
alter table Course add foreign key(FacID) references Faculty1(FacID);
/* inserting `''` instead of `0` for FacId results in an error */
begin try;
insert into Course(CourseID,CourseDesc,CourseType,SemNo,FacID) values
('EE025','Digital Logic Circuits','Theory','4','');
end try
begin catch
select error_message();
end catch;
/* inserting `0` for FacId = no error*/
insert into Course(CourseID,CourseDesc,CourseType,SemNo,FacID) values
('EE025','Digital Logic Circuits','Theory',4,'0');
select * from Course;
/* inserting without specifying FacId uses default*/
insert into Course(CourseID,CourseDesc,CourseType,SemNo) values
('EE026','Digital Logic Circuits','Theory',4);
select * from Course;