• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

the one

[Duvida] Eliminar dois registos de duas tabelas

7 mensagens neste tópico

Boa tarde a todos .

O que me trás por cá hoje é o seguinte :

Tenho numa base de dados duas tabelas relacionadas (professores e utilizadores) , onde o professor é obrigatoriamente utilizador, mas o utilizador pode não ser professor .

Ao relacionar as tabelas, na conversão do convencional para o relacional , a tabela professores , ganhou o campo chave primaria da tabela utilizadores (id_user) .

A minha duvida reside na eliminação dos dados . Como é que elimino da base de dados os registos do utilizador e professor, se estão em tabelas diferentes ?

 Delete * From professores, utilizadores Where professores.id_user = utilizadores.id_user and nomeprof = @nome"

Nota que "@nome" é o campo que está numa textbox .

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é um problema típico de "cleaning".

Tens de detectar os duplicados e tal faz-se, normalmente, através da comparação de alguns campos. Os campos escolhidos devem os que melhor identificam, univocamente, um individuo.

Por exemplo, se tiveres o número de bi ou nif são, tipicamente, bons candidatos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se criares a FK entre as duas tabela com a opção CASCADE DELETE, ao aliminares um utilizador que é professor, o registo do professor será automaticamente eliminado.

claro que se o registo da tabela de professores tiver outras relações dependentes, isto pode não assim tão directo, já que não vai ser possivel eliminar o registo "professor".

fica a dica!

inté!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho a tabela professores ligado à area , mas não é dependente desta .

Posso eliminar o professor , que a area continua .

Como faco isso do CASCADA DELETE ? :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não posso fazer a comparação pelo id ?

Não porque os ids identificam o registo na base de dados e não o objecto que um registo representa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como faco isso do CASCADA DELETE ? :s

cascade delete é uma "opção" na criação de FKs.

a definição de FK pode depender da base de dados que estás a usar..

google por "alter table add constraint cascade delete" e encontras rapidamente a forma de definir a FK.

inté!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora