首页 > 解决方案 > 我可以从表创建中进行限制吗?

问题描述

假设我有 3 张桌子

courses(id)
students(id)
student_courses(Primary Key is (courses.id,students.id)

我必须输入大量数据,并且我希望一个学生最多参加 10 门课程,我可以在创建表student_courses中做一些事情以在学生达到适当数量的课程时停止添加另一门课程吗?

标签: mysqlsqldatabase

解决方案


您可以使用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 条记录。


推荐阅读