none
Dúvida em update em tabelas chave estrangeiras RRS feed

  • Pergunta

  • Tenho uma tabela chamada Equipamento com as colunas:

    codigo, telefone, ....

    Sempre tive essa tabela e fazia update nela normalmente, porém tive que acrescentar uma outra tabela vinculando com chave estrangeira:

    e outra tabela é EquipamentoGeo com a chave estrangeira código da tabela equipamento, ou seja:

    codigo, latitude, longitude

    Agora, quando tento fazer o mesmo update, dá erro, obviamente por causa da chave estrangeira, só que eu nunca fiz nenhum exemplo em que faço esse update em tabelas com chave estrangeira (não sou DBA, apenas manipulo um pouco), gostaria de algum exemplo de como fazer isto.

    Desde já obrigado.


    terça-feira, 5 de novembro de 2013 18:43

Respostas

  • Bom dia,

    a chave estrangeira não interfere em nada no update,  ela pode dar "problema" no INSERT e no DELETE.

    Exemplo:

    CREATE TABLE TipoComunicacao (
           id INT PRIMARY KEY IDENTITY,
           descricao VARCHAR(50))
    GO
    INSERT INTO TipoComunicacao VALUES
    ('Telefone'), ('Email'), ('Fax')
    GO
    CREATE TABLE Comunicacao (
           id INT PRIMARY KEY IDENTITY,
           cliente VARCHAR(50),
           tipo INT,
           CONSTRAINT FK_TipoComunicacao FOREIGN KEY(tipo)
           REFERENCES TipoComunicacao(id))
    GO
    INSERT INTO Comunicacao VALUES
    ('José', 1), ('João', 2), ('Maria', 3)
    GO

    o update pode ser feito normalmente na tabela Comunicacao do exemplo, exceto se você passar um ID que não exista na TipoComunicação.

    quarta-feira, 6 de novembro de 2013 11:25

Todas as Respostas

  • Bom dia,

    a chave estrangeira não interfere em nada no update,  ela pode dar "problema" no INSERT e no DELETE.

    Exemplo:

    CREATE TABLE TipoComunicacao (
           id INT PRIMARY KEY IDENTITY,
           descricao VARCHAR(50))
    GO
    INSERT INTO TipoComunicacao VALUES
    ('Telefone'), ('Email'), ('Fax')
    GO
    CREATE TABLE Comunicacao (
           id INT PRIMARY KEY IDENTITY,
           cliente VARCHAR(50),
           tipo INT,
           CONSTRAINT FK_TipoComunicacao FOREIGN KEY(tipo)
           REFERENCES TipoComunicacao(id))
    GO
    INSERT INTO Comunicacao VALUES
    ('José', 1), ('João', 2), ('Maria', 3)
    GO

    o update pode ser feito normalmente na tabela Comunicacao do exemplo, exceto se você passar um ID que não exista na TipoComunicação.

    quarta-feira, 6 de novembro de 2013 11:25
  • Se você fez algum relacionamento e deu erro no update, provavelmente este update esta quebrando alguma relação de integridade da sua estrutura. Fica difícil advinha o que está acontecendo... Faça assim, pegue este update e execute-o no sql server e cole a mensagem de erro aqui. Daí poderemos te ajudar melhor.

    Ao infinito e além!

    quarta-feira, 6 de novembro de 2013 11:40