为什么我的 FOREIGN KEY 约束不起作用:为什么插入的外部列中不存在值?

问题描述

我正在使用在线 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 (将#修改为@)