2011-01-27 3 views
4

У меня есть одна таблица «Студенты» и одна таблица «Приложения».
Каждый студент может подать заявку на максимум 3 курса. Как я могу обеспечить это в базе данных? Вызывать? Constraint?Как ограничить число приложений на одного ученика до 3?

Можете ли вы показать мне, как его написать? Я новичок в SQL

+0

пожалуйста, на один вопрос за вопросом – araqnid

+0

ОК, отредактированный вопрос оставить первый – Ichibann

ответ

5

Один из способов - поставить счетчик на студентов. Когда строка добавляется в приложения, увеличивая ее, когда строка удаляется, уменьшайте ее. Выполнение этого с помощью триггеров очень просто.

Затем поставить ограничение на студентов, так что счетчик должен быть < = 3.

+0

будет Ot предотвратить добавление 4-го appliation? Или это просто мешает счетчику увеличивать и добавлять приложение в любом случае? – Ichibann

+0

Предположим, что триггер для приложений. Вы вставляете четвертую строку для ученика, и он обновляет учеников, чтобы увеличить счетчик до 4. Ограничение на учеников вызывает и отклоняет его. Это откат всей транзакции и вставка не выполняется. Это то, где триггеры действительно сияют. –

+0

Обновление строки учеников действует как синхронизация для защиты от одновременных вставок, разрешенных, когда они тоже не должны. – araqnid

0
SELECT COUNT(*) FROM Applications GROUP BY Student_ID 
+0

Предполагая, что это атрибуты, используемые в ваших таблицах. – r3st0r3

+0

ОК, это только SELECT. Это не ограничение или что-то ... – Ichibann

Смежные вопросы