Como você cria um relacionamento com uma chave não primária no SQL Server?


8

Eu tenho uma tabela de usuários que tem duas colunas uma chave primária chamada UserID e outra coluna chamada UserName.

  • PK de ID do usuário (int)
  • Nome de usuário (varchar (256)

Os dois são únicos, mas decidi, por razões de uso, o UserName como referência em outras tabelas. Portanto, a tabela de pedidos, por exemplo, tem uma referência ao usuário por UserName, e não userid.

  • OrderID
  • Nome do usuário

Desejo criar um relacionamento entre todas as tabelas que referenciam o UserName e a tabela Users, para obter o recurso de atualização / exclusão em cascata do SQL Server.

Mas o SQL Server não me permite criar um relacionamento em uma coluna de chave não primária. Existe alguma maneira de obter o recurso de atualização / exclusão em cascata sem alterar a tabela de usuários para que UserName seja a chave primária e não o UserID?

Respostas:


13

Crie um índice exclusivo ou restrição exclusiva e, em UserNameseguida, faça referência a ela com uma multa de restrição FK.

Sua declaração de que

Sql Server não me permite criar um relacionamento em uma coluna de chave não primária

está incorreto. O SQL Server cuida apenas que as colunas que participam do relacionamento FK tenham um índice exclusivo definido.


11
você está correto, minha declaração foi baseada na mensagem de erro que recebi do sql server quando tentei criar o relacionamento.
Shrage Smilowitz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.