ORACLE:Contrainte de limiter le nombre de questions qu'un article peut être dans
-
12-11-2019 - |
Question
Coincé sur cette question lors d'une révision du papier.J'ai laissé les autres relations comme ils ne sont pas pertinents pour la question.
Considérons la relation suivante:Article(aride, titre, revue, numéro, année, page d'accueil, endpage)
Comment puis-je faire une contrainte qui fait en sorte que pas plus de 5 articles peuvent être publiés dans un sujet en particulier?
Je ferais quelque chose comme:
CREATE ASSERTION ArticlesInIssue
CHECK(
(SELECT COUNT(Issue) FROM Article) <= 5);
Je pense que ce ne serait pas de travail bien qu'il ne serait pas comptant pour la question, non?Donc, ai-je besoin d'une clause where, ou vais-je en le totalement mauvais sens ici?Merci, Mo.
La solution
écrire un déclencheur cela incendie sur insertion.Vous pouvez écrire SQL dans la gâchette pour interroger la table sur la table et faire ce chèque.Votre code devra explicitement annuler l'insert.
J'espère que vous avez un index sur la colonne d'émission!
Autres conseils
Une solution possible est d'ajouter une articleNo NUMBER(1) NOT NULL
la colonne et les contraintes:
UNIQUE (issue, articleNo)
et
CHECK (articleNo BETWEEN 1 AND 5)