ORACLE: ограничение для ограничения количества вопросов, в которых может быть статья - PullRequest
0 голосов
/ 23 января 2012

Застрял в этом вопросе в редакции. Я оставил остальные отношения, поскольку они не имеют отношения к вопросу.

Рассмотрим следующее соотношение: Статья (arID, заголовок, журнал, выпуск, год, стартовая страница, конечная страница)

Как мне поступить с ограничением, обеспечивающим публикацию не более 5 статей в одном конкретном выпуске?

Буду ли я делать что-то вроде:

CREATE ASSERTION ArticlesInIssue
CHECK(
(SELECT COUNT(Issue) FROM Article) <= 5);

Я думаю, что это не сработает в полной мере, поскольку не будет учитывать конкретную проблему, верно? Так что мне понадобится предложение where или я пойду в совершенно неверном направлении? Спасибо, Мо

Ответы [ 2 ]

1 голос
/ 24 января 2012

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

Надеюсь, у вас есть индекс для столбца проблемы!

0 голосов
/ 12 февраля 2012

Одним из возможных решений является добавление столбца articleNo NUMBER(1) NOT NULL и ограничений:

UNIQUE (issue, articleNo) 

и

CHECK (articleNo BETWEEN 1 AND 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...