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