Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fui criar uma integridade entre duas tabelas e acabei com duas dúvidas:
1. Antes a tabela estava em MyISAM e quem 'cuidava da integridade' era o PHP. Porém isso não lhe garante segurança se eu for lá na segunda tabela e deletar alguma coisa (a primeira tabela vai ficar com o ID que não existe). Bom, isso todo mundo aqui sabe, direto ao ponto:
criando um exemplo:
Tabela pessoa:
id, nomePessoa, carro_id...
Tabela carro:
id, marca, modelo...
Ao cadastrar uma nova pessoa, ela é obrigada a ter um carro, então deixei o campo 'carro_id' como not null default 1 (todas as pessoas têm pelo menos o carro 1).
Quando alterei a engenharia para InnoDB e fui criar a integridade, me deparei com as seguintes interessantes situações:
UPDATE pessoa SET carro_id = null;
Quando eu fiz isso, achei que todas as pessoas passariam a ter o carr 1 (já que não permiti valores nulos e o default é 1), mas o que aconteceu foi que ao invés de 1, tudo ficou 0.
Se é default, não deveria assumir esse valor quando eu setasse null ?
Enfim, o que eu quero é o seguinte:
Registrando uma nova pessoa, o carro_id tem que ser 1 (default).
Se a pessoa adquirir o carro 5 e em algum dia o carro 5 for deletado, então ela retorna ao carro 1.
Esse campo NUNCA poderá ser NULO ou 0, terá que ser de algum carro existente OU 1.
O carro 1 NUNCA será deletado.
Any help? :D
Carregando comentários...