Pergunta

É mais fácil com um exemplo. Eu tenho duas tabelas: Livros e Capítulos. Ambos têm Título e código colunas. Capítulos também tem uma coluna de livro que é uma chave estrangeira para Books.Id. Books.Title é único (eu não quero dois livros com o mesmo título).

Agora o meu problema é definir singularidade Chapter.Title. Eu quero que seja única, enquanto Books.Id é o mesmo. Assim que um livro pode não ter dois capítulos com o mesmo título, mas dois livros diferentes podem ter o mesmo título em um capítulo.

Isso é possível no SQL Server 2008? Como?

Foi útil?

Solução

restrição exclusiva ou índice exclusivo. Qualquer um vai fazer.

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

ou

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

Outras dicas

Criar um índice exclusivo em capítulos, utilizando colunas BookID e título (índices podem incluir várias colunas, não apenas um)

Assim, dentro Chapter, é a combinação de Book e Title que deve ser exclusivo. Basta criar um índice UNIQUE abrangendo as colunas, e está feito.

A propósito, não posso deixar de pensar que

(Eu não quero dois livros com o mesmo título)

vai voltar e mordê-lo, se você está realmente falando de livros do mundo real. Se este é apenas um exemplo, então não se preocupe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top