Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Inserir se não existir se não dar update

Eu quero saber se existe uma possibilidade de um comando que insere e se ja existir ele da um update em SQL. Eu nao tenho primary key, vou dar um exemplo de tabela

user,telefone,operadora

O usuário pode ter vários telefones mas a operadora ela pode ser mudada. Entao se ele encontrar na hora de inserir o mesmo user e telefone eu quero dar um update na operadora somente.

É possivel fazer isso somente com um comando em SQL?

2 respostas

Oi Gabriel, tudo bem ?

Geralmente o que a galera faz é criar uma tabela user,outra telefone e outra operadora.

Ai você consegue gerar uma tabela que é a junção de todos os telefones do usuario, que teria o id do usuario e o id do telefone.

E outra tabela que teria o id do telefone com o id da operadora.

Nisso na hora de você buscar as informações consegue fazer de forma dinâmica e para inserir você terá id para saber se é um registro novo ou não.

Espero ter ajudado.

Abraços

solução!

Olá, Gabriel!

O que você está propondo é um comando de "UPSERT" (UPDATE/INSERT).

Se você estiver usando SQL Server, você pode usar o comando MERGE:

https://technet.microsoft.com/pt-br/library/bb522522(v=sql.105).aspx

Se você estiver usando MySQL, você pode usar a cláusula ON DUPLICATE:

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

Se você estiver usando PL-SQL (Oracle), você pode usar MERGE:

https://gist.github.com/baybatu/f59b4e70d1cb57417323

Boa sorte e boas aulas!