微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么我的 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 举报,一经查实,本站将立刻删除。