Oracle: vincolo per limitare il numero di questioni che un articolo può trovarsi
-
12-11-2019 - |
Domanda
Bloccato su questa domanda in un documento di revisione. Ho lasciato le altre relazioni in quanto non sono rilevanti per la domanda.
Considera la seguente relazione: articolo (arid, titolo, rivista, numero, anno, startpage, endpage)
Come farei a fare un vincolo che si assicura che non più di 5 articoli possano essere pubblicati in un determinato numero?
Farei qualcosa come:
CREATE ASSERTION ArticlesInIssue
CHECK(
(SELECT COUNT(Issue) FROM Article) <= 5);
Penso che questo non funzionerebbe completamente in quanto non contarebbe per il problema specifico, giusto? Quindi avrei bisogno di una clausola dove o sto andando nella direzione totalmente sbagliata qui? Grazie, Mo.
Soluzione
scrivere un grilletto che si accende su Insert. È possibile scrivere SQL nel grilletto per interrogare la tabella che è inserita e fare quel controllo. Il tuo codice dovrà rollback esplicitamente l'inserto.
Spero che tu abbia un indice sulla colonna del problema!
Altri suggerimenti
Una possibile soluzione è aggiungere un articleNo NUMBER(1) NOT NULL
colonna e i vincoli:
UNIQUE (issue, articleNo)
e
CHECK (articleNo BETWEEN 1 AND 5)