Могу ли я сделать ограничения уже от создания таблицы? - PullRequest
0 голосов
/ 20 января 2020

Предположим, у меня есть 3 таблицы

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

Мне нужно ввести много данных, и я хочу один студент может пройти не более 10 курсов , могу ли я что-нибудь сделать в таблице создания student_courses прекратить добавлять другие курсы, когда студент достигнет нужного количества курсов?

1 Ответ

0 голосов
/ 20 января 2020

Вы можете использовать ограничение 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)

и каждый раз, когда вы вставляете данные для идентификатора студента и идентификатора курса в таблицу проверит, доступны ли 10 или менее записей для этого учащегося, и ограничит вставку 11-й записи в таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...