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.

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top