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

Foreign Key


DackAle

Pergunta

E ae galera

Seguinte criei duas tabelas, a primeira tabela tem a coluna COD, na segunda tabela tem a coluna COD_J, que é a referencia de COD da outra tabela, criei a FOREIGN KEY pra relacionar o COD com o COD_J

CREATE TABLE jantar
(
COD  INT  	NOT NULL IDENTITY(1,1),
Titulo  Char(150)  NOT NULL,
Data_Criacao	datetime  NOT NULL 
Constraint AC5_COD  	Primary Key(Cod)
)

CREATE TABLE jantar_s
(
COD  INT  	NOT NULL IDENTITY(1,1),
COD_J  INT  	NOT NULL,
tipo  Char(40)  NOT NULL,
produto  Char(150)  NOT NULL,
Data_Criacao	datetime  NOT NULL 
Constraint AC6_COD  	Primary Key(Cod),
Constraint AC6_J  	Foreign KEY(COD_J) References jantar(COD)
)

Tudo parece OK, mas quando vou deletar um registro da tabela JANTAR, gera um erro

DELETE statement conflicted with COLUMN REFERENCE constraint 'AC6_J'. The conflict occurred in database 'artesanatogastronomi', table 'jantar_s', column 'COD_J'.

Aparentemente ele não deixa deletar por causa da referencia, como posso arrumar isso e fazer se algum registro da tabela jantar for deletado, os registros relacionados da tabela jantar_s tb sejam ?

Abraçoss

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Hmmm bom tenho uma parte que atualizo um registo e gera esse erro

Microsoft][ODBC SQL Server Driver][sql Server]UPDATE statement conflicted with COLUMN REFERENCE constraint 'AC10_Categoria'. The conflict occurred in database 'gastronomia', table 'Eventos', column 'Categoria'.

é a mesma coisa do erro anterior, ele não deixa atualizar nem apgar o que está relacionado...

como faço para arrumar isso ?

Estou programando em ASP no caso, faço update e delete comum...

Qualquer ajuda é bem vinda =)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Hmmm bom tenho uma parte que atualizo um registo e gera esse erro

Microsoft][ODBC SQL Server Driver][sql Server]UPDATE statement conflicted with COLUMN REFERENCE constraint 'AC10_Categoria'. The conflict occurred in database 'gastronomia', table 'Eventos', column 'Categoria'.

é a mesma coisa do erro anterior, ele não deixa atualizar nem apgar o que está relacionado...

como faço para arrumar isso ?

Estou programando em ASP no caso, faço update e delete comum...

Qualquer ajuda é bem vinda =)

Abraços

Olá Dark, você tem que alterar no banco mesmo

o SQL Server garante a integridade referencial, por isso que ele não permite fazer um update numa tabela que está sendo referenciada por outra

Mas caso você queira alterar um alguma coisa nela, e você queira que reflita nas tabelas que estão relacionadas a ela, você pode fazer assim:

vá na tabela(s) que se referenciam a ela e:

1º apagar a constraint da tabela:

alter table <nome da tabela> drop constraint <nome da constraint>

2º adicionar novamente a constraint mas adicionando o on update cascade

constraint <nome> foreign key (campo) references <tabela>(<campo>) on update cascade

agora você pode dar um update na tabela que será atualizado nas tabelas relacionadas

obs: Sempre é bom você ter um backup antes de fazer mudanças no banco.

qualquer coisa retorne

Abraços

Lisandro Oliveira

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...