Domanda

È più facile con un esempio. Ho due tavoli: libri e capitoli. Entrambi hanno colonne Titolo e Id. I capitoli hanno anche una colonna Libro che è una chiave esterna per Books.Id. Books.Title è unico (non voglio due libri con lo stesso titolo).

Ora il mio problema è la definizione di Chapter.Title unicità. Voglio che sia unico purché Books.Id sia lo stesso. In modo che un libro non possa avere due capitoli con lo stesso titolo, ma due libri diversi potrebbero avere lo stesso titolo in un capitolo.

È possibile su SQL Server 2008? Come?

È stato utile?

Soluzione

VINCITORE UNICO o indice UNICO. O uno lo farà.

ALTER TABLE dbo.MyTable WITH CHECK ADD
    CONSTRAINT UQ_MyTable_BookTitle UNIQUE (BookID, Title)

o

CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)

Altri suggerimenti

Crea un INDICE UNICO sui Capitoli usando le colonne BookID e Title (gli indici possono includere diverse colonne, non solo una)

Quindi all'interno di Chapter , è la combinazione di Book e Title che deve essere unica. Crea semplicemente un indice UNICO su queste colonne e il gioco è fatto.

A proposito, non posso fare a meno di pensarlo

  

(Non voglio due libri con lo stesso titolo)

tornerà e ti morderà, se in realtà stai parlando di libri del mondo reale. Se questo è solo un esempio, allora non preoccuparti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top