Sou novo em bancos de dados e estou enfrentando um desafio. Estou conectando um sistema de pedidos a um banco de dados com um cliente e uma tabela de pedidos como a seguir:
Cliente. | Ordem. |
---|---|
id (chave primária) | order_id (chave primária) |
nome | quantia |
e-mail Chave estrangeira | |
telefone | system_order_id |
endereço | - |
Estou com a seguinte situação que não sei como resolver: recebo um pedido do nosso sistema de pedidos que contém as seguintes informações:
- system_order_id
- quantia
- telefone
- nome
Quero verificar se o cliente possui registro em nosso banco de dados. Caso contrário, adicione uma linha no banco de dados. Se sim, atualize a linha do cliente correspondente no email , não a chave primária, com informações extras (o número de telefone)
Como posso fazer isso facilmente? Como posso
REPLACE INTO
combinando com email, não com a chave primária e atualizando apenas as informações que estão faltando. ou seja, atualize o número de telefone, mas mantenha o endereço e o nome do registro.
Existe uma maneira melhor de fazer isso? Finalmente, existe uma maneira melhor de estruturar meu banco de dados?
Eu fiz esse tipo de coisa no MySQL/PHP. Sua chave primária de ID deve ser de incremento automático e você precisará de um índice exclusivo no campo de email.
INSERIR EM
Client
(nome, email, telefone, endereço) VALORES ("Nome do cliente", " [email protegido] ", "555-555-5555", "Endereço 000, Cidade, Estado, CEP") NA CHAVE DUPLICADA ATUALIZAR nome = "Nome do Cliente", telefone = "555-555-5555", endereço = "Endereço 000, Cidade, Estado, CEP";