mysql - 我可以对表创建进行限制吗?

标签 mysql sql database

假设我有 3 张 table

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

我必须输入大量数据,并且我希望一个学生最多选修 10 门类(class),我可以在创建表 student_courses 中执行某些操作来停止添加其他类(class)吗?学生将达到适当数量的类(class)?

最佳答案

您可以使用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 和类(class) ID 的数据时,它都会检查该学生是否有 10 条或以下记录,并限制在表中插入第 11 条记录。

关于mysql - 我可以对表创建进行限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825037/

相关文章:

python - Python中的sqlite3:我可以增加最大连接数吗?

javascript - 从 MySQL 解析时转换的日期时间值

c# - Entity Framework - SQL 查询 - 限制和排序依据 - SQL Server

Android:SQLiteCursor/SimpleCursorAdapter 在后台

mysql - sql计算从今天开始的日期和持续时间

sql - 在配置单元中使用 wm_concat 时,如何用 0 填充不存在的值?

database - 非规范化字段的命名约定

mysql - mysql中连续两行的区别

sql - MySQL选择出现 "N"次的条目数

mysql - PyMySQL 可以用作 Python 的 MySQL/Connector 的直接替代品吗?