Ir para conteúdo
Fórum Script Brasil
  • 0

erro na criação de uma constraint FK


Rafa Alves

Pergunta

bom dia! Sou iniciante em banco de dados SQL Server e estou criando um banco de dados exemplo sobre hospedagem. Estou travado pois das 3 FKs que possuo na tabela Reserva, eu não estou conseguindo adicionar a FK Nr_quarto, pois dá um erro: 

"Msg 1776, Level 16, State 0, Line 112
There are no primary or candidate keys in the referenced table 'Quarto' that match the referencing column list in the foreign key 'FK_Reserva_Quarto' 

Por favor poderiam me auxiliar?

create table Quarto (
Nr_hotel  INT not null,
Nr_quarto INT not null, 
Cd_tipo   CHAR(2) not null,
CHECK (Cd_tipo IN('1', '2')),
Vl_preço  INT not null
PRIMARY KEY (Nr_hotel, Nr_quarto)
)
go

create table Reserva (
Nr_reserva INT IDENTITY, 
Nr_hotel   INT not null,         /*FK*/
Nr_quarto  INT not null,         /*FK*/  
Dt_inicio  DATE not null,
Dt_fim     DATE,
Nr_hospede INT NOT NULL,     /*FK*/
  
PRIMARY KEY (Nr_reserva)
)
go


ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Quarto
FOREIGN KEY(Nr_quarto) REFERENCES Quarto(Nr_quarto)
GO

ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Hospede
FOREIGN KEY(Nr_hospede) REFERENCES Hospede(Nr_hospede)
GO


ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Hotel
FOREIGN KEY(Nr_hotel) REFERENCES Hotel(Nr_hotel)
GO

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Em 24/01/2023 em 07:55, Rafa Alves disse:

bom dia! Sou iniciante em banco de dados SQL Server e estou criando um banco de dados exemplo sobre hospedagem. Estou travado pois das 3 FKs que possuo na tabela Reserva, eu não estou conseguindo adicionar a FK Nr_quarto, pois dá um erro: 

"Msg 1776, Level 16, State 0, Line 112
There are no primary or candidate keys in the referenced table 'Quarto' that match the referencing column list in the foreign key 'FK_Reserva_Quarto' 

Por favor poderiam me auxiliar?

create table Quarto (
Nr_hotel  INT not null,
Nr_quarto INT not null, 
Cd_tipo   CHAR(2) not null,
CHECK (Cd_tipo IN('1', '2')),
Vl_preço  INT not null
PRIMARY KEY (Nr_hotel, Nr_quarto)
)
go

create table Reserva (
Nr_reserva INT IDENTITY, 
Nr_hotel   INT not null,         /*FK*/
Nr_quarto  INT not null,         /*FK*/  
Dt_inicio  DATE not null,
Dt_fim     DATE,
Nr_hospede INT NOT NULL,     /*FK*/
  
PRIMARY KEY (Nr_reserva)
)
go


ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Quarto
FOREIGN KEY(Nr_quarto) REFERENCES Quarto(Nr_quarto)
GO

ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Hospede
FOREIGN KEY(Nr_hospede) REFERENCES Hospede(Nr_hospede)
GO


ALTER TABLE Reserva ADD CONSTRAINT FK_Reserva_Hotel
FOREIGN KEY(Nr_hotel) REFERENCES Hotel(Nr_hotel)
GO

 

Na verdade o erro ocorre porque é a tabela Quarto possui uma chave primaria composta.
por isso na criação da constraint voce tem que adicionar as duas colunas que compõe a chave.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...