问题描述
我正在使用在线 sql 编译器。即使我将 StudentId 插入到 Marks 表中,但在 Student 表中不存在,它也会插入该值而不会引发任何错误。
为什么我的外键约束不起作用?我尝试了很多方法来编写约束,但仍然不起作用。
我的代码是:
CREATE TABLE Student
(
StudentId INTEGER PRIMARY KEY,FName varchar(10) DEFAULT 'maya',DOJ DATE DEFAULT '20-JAN-2021',GENDER CHAR(1) CHECK(GENDER IN('M','F')),ContactNo NUMBER(10) UNIQUE
);
INSERT INTO Student (StudentId,GENDER,ContactNo)
VALUES (1003,'F',NULL);
INSERT INTO Student (StudentId,FName,ContactNo)
VALUES (1004,'Riya',9846669343);
INSERT INTO Student (StudentId,ContactNo)
VALUES (1005,'Diya',9846649343);
CREATE TABLE Marks
(
CourseId INTEGER,StudentId integer,marks NUMBER(4,2),FOREIGN KEY (StudentId) REFERENCES Student (StudentId)
ON DELETE CASCADE
);
INSERT INTO Marks VALUES (2,1003,80.54);
INSERT INTO Marks VALUES (3,1004,91.5);
INSERT INTO Marks VALUES (2,2001,93.55);
SELECT * FROM Marks;
我的输出是:
2|1003|80.54
3|1004|91.5
2|2001|93.55
这里StudentId:2001没有出现在Student表的StudentId列中,但还是被插入了。为什么会这样?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)