none
UPDATE usando INNER JOIN RRS feed

  • Pergunta

  • BOA TARDE PESSOAL,

    gostaria de saber porque esse comando meu não está funcionando. Estou tentando aplicar esta alteração a 3 tabelas, porem está sendo sem exito, alguém poderia me ajudar a descobrir o problema?

    UPDATE UMATRICPL SET GRADE = '5'
    FROM UMATRICPL 
    INNER JOIN UMATALUN ON UMATALUN.MATALUNO = UMATRICPL.MATALUNO
    INNER JOIN UALUCURSO ON UMATRICPL.MATALUNO = UALUCURSO.MATALUNO
    where 
    UMATALUN.PERLETIVO = '1-2014' and
    UMATALUN.CODcur in('3') and
    UALUCURSO.MATALUNO like '%14-1%'

    Olha o erro que está dando...

    Msg 547, Level 16, State 0, Line 1
    The UPDATE statement conflicted with the REFERENCE constraint "FKUMATALUN_UMATRICPL". The conflict occurred in database "BIBLIOS", table "dbo.UMATALUN".
    The statement has been terminated.

    quarta-feira, 22 de outubro de 2014 18:51

Respostas

  • Deleted
    quarta-feira, 22 de outubro de 2014 19:23
  • Charles,

    Como o José indicou, você precisa verificar qual a restrição desta Constraint na tabela "UMATALUN", que causou este erro.

    Pode ser relacionado a um "registro inexistente" ou a duplicação de dados na tabela "UMATRICPL".

    Faça uma consulta simples em ambas as tabelas para investigar onde está sendo restringindo a alteração.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quarta-feira, 22 de outubro de 2014 19:36
    Moderador

Todas as Respostas

  • Tem certeza que deseja fazer um UPDATE? Execute a consulta primeiro para confirmar se o resultado está correto:

    SELECT * FROM UMATRICPL 
    INNER JOIN UMATALUN ON UMATALUN.MATALUNO = UMATRICPL.MATALUNO
    INNER JOIN UALUCURSO ON UMATRICPL.MATALUNO = UALUCURSO.MATALUNO
    where 
    UMATALUN.PERLETIVO = '1-2014' and
    UMATALUN.CODcur in('3') and
    UALUCURSO.MATALUNO like '%14-1%'


    • Sugerido como Resposta Deric Ferreira quarta-feira, 22 de outubro de 2014 18:54
    quarta-feira, 22 de outubro de 2014 18:54
  • Boa tarde Deric Ferreira...

    conferir sim, o resultado está corretissimo só não estou conseguindo fazer a mudança da grade que está vinculada as 3 tabelas


    CharlesTI.

    quarta-feira, 22 de outubro de 2014 18:58
  • Inclusive estou querendo fazer essa mudança numa coluna só de uma tabela para que sofra efeito na mesma coluna das outras tabelas vinculadas.

    CharlesTI.

    quarta-feira, 22 de outubro de 2014 18:59
  • Você precisa identificar a tabela.campo

    Se for alterar apenas a tabela UMATRICPL 

    UPDATE UMATRICPL SET UMATRICPL.GRADE = '5'
    FROM UMATRICPL 
    INNER JOIN UMATALUN ON UMATALUN.MATALUNO = UMATRICPL.MATALUNO
    INNER JOIN UALUCURSO ON UMATRICPL.MATALUNO = UALUCURSO.MATALUNO
    where 
    UMATALUN.PERLETIVO = '1-2014' and
    UMATALUN.CODcur in('3') and
    UALUCURSO.MATALUNO like '%14-1%'

    quarta-feira, 22 de outubro de 2014 19:07
  • Eu já tinha tentado, e mesmo assim não havia tido exito, fiz novamente e nada deu certo, continua o mesmo erro.

    CharlesTI.

    quarta-feira, 22 de outubro de 2014 19:10
  • Se existem chaves para a tabela ou você remove-as primeiro ou faz o update na ordem correta. Se preferir poste o seu modelo de banco para ajudar.
    quarta-feira, 22 de outubro de 2014 19:14
  • Deric as chaves estrangeiras das tabelas são atraves da "MATALUNO" que é a matricula do aluno que faço a associação.

    CharlesTI.

    quarta-feira, 22 de outubro de 2014 19:17
  • Deleted
    quarta-feira, 22 de outubro de 2014 19:23
  • Charles,

    Como o José indicou, você precisa verificar qual a restrição desta Constraint na tabela "UMATALUN", que causou este erro.

    Pode ser relacionado a um "registro inexistente" ou a duplicação de dados na tabela "UMATRICPL".

    Faça uma consulta simples em ambas as tabelas para investigar onde está sendo restringindo a alteração.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quarta-feira, 22 de outubro de 2014 19:36
    Moderador
  • Boa tarde Durval, estava conversando com o pessoal que são responsaveis pelo sistema e eles estão vendo para mim este caso sobre a restrição da tabela, e assim que verem estarei postando aqui o que aconteceu.

    desde já,

    obrigado.


    CharlesTI.

    quinta-feira, 23 de outubro de 2014 19:27