Eu tenho meu banco de dados estruturado assim com people.person_id
a chave estrangeira para cada linha em people_meta
.
people
tabela
╔═════╦════════╦═══════╗
║ id ║ fname ║ lname ║
╠═════╬════════╬═══════╣
║ 0 ║ John ║ Doe ║
║ 1 ║ John ║ Doe ║
║ 2 ║ Bob ║ Smith ║
║ 3 ║ Dave ║ Jones ║
║ 4 ║ Bob ║ Smith ║
║ 5 ║ Jen ║ Smith ║
╚═════╩════════╩═══════╝
people_meta
tabela
╔═════╦════════════╦════════╦═══════╗
║ id ║ person_id ║ key ║ value ║
╠═════╬════════════╬════════╬═══════╣
║ 0 ║ 0 ║ state ║ NY ║
║ 1 ║ 0 ║ age ║ 53 ║
║ 2 ║ 1 ║ party ║ D ║
║ 3 ║ 1 ║ age ║ 53 ║
║ 4 ║ 2 ║ state ║ CA ║
║ 5 ║ 4 ║ party ║ R ║
╚═════╩════════════╩════════╩═══════╝
O que eu quero fazer é combinar as people
linhas duplicadas e colocá-las em cascata na people_meta
tabela de alguma forma. Observe que alguns dados people_meta
seriam duplicados se fossem combinados.
A primeira coisa que tentei foi definir ON DELETE NO ACTION
e ON UPDATE CASCADE
, em seguida, no phpMyAdmin, tentei excluir manualmente o pai duplicado com o ID inferior e atualizar o ID da segunda duplicata para o que era o primeiro, pensando que seria uma cascata e me daria o efeito desejado. - FALHAON UPDATE
- Aparentemente, usar os recursos / do InnoDB ON DELETE
não será útil para tal tarefa, mas pelo menos aprendi mais sobre o propósito deles.
Sou meio novato em SQL, então agradeço qualquer recomendação.
Você precisará alterar os valores de people_meta.person_id antes de excluir a linha da tabela de pessoas, porque o mecanismo não saberia como substituir os valores pelas duplicatas.