mysql - 我可以从表创建中进行限制吗?
问题描述
假设我有 3 张桌子
courses(id)
students(id)
student_courses(Primary Key is (courses.id,students.id)
我必须输入大量数据,并且我希望一个学生最多参加 10 门课程,我可以在创建表student_courses
中做一些事情以在学生达到适当数量的课程时停止添加另一门课程吗?
解决方案
您可以使用CHECK
约束来找出一名学生的人数。
请按照以下步骤操作
即创建表。
CREATE TABLE IF NOT EXISTS student_courses
( Course_id int ,
student_id int ,
.
.
.
PRIMARY KEY (Course_id,student_id)
);
创建函数以返回计数student_id
Create FUNCTION studentCount(studentId int)
Returns int
AS
BEGIN
Declare Count int
Select Count=Count(*) from student_courses Where student_id=studentId
Return Count
END
/
现在CHECK
向表添加约束
Alter Table student_courses add Constraint CK_student_course Check(studentCount(student_id)<=10)
每次当您在表中插入学生 ID 和课程 ID 的数据时,它都会检查该学生是否有 10 条或以下的可用记录,并将限制在表中插入第 11 条记录。
推荐阅读
- django - 我如何控制静态目录资源
- python - 使用 selenium 和 python 进行 Web 抓取 - 包含文本的 xpath
- mysql - 从两个不同的表中减去字段并在 Laravel 中更新期间更新值
- python - 找到相同的键并合并到字典列表中?Python
- java - spring integration 注册动态 ServerWebSocketContainer 路径,因此可以使用不同的路径创建不同的集成流
- python - Pandas DataFrame 和 numpy 标准差不同
- typescript - React-typescript:无法调用可能是“未定义”的对象
- node.js - 在带有 express 的 node.js 中,有没有办法即时更改链接的 url?
- excel - 在表中查找字符串并删除行
- c# - ImageResizer 最佳设置以获得最高质量