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.

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top