Não excluir foreing key ao excluir referencia

Vi um soft que tinha uma tela de clientes e outra de agendamento e, ao excluir um cliente não era excluído o agendamento, era adicionado a palavra “excluido” junto ao nome do cliente.
Alguém tem uma ideia de como fazer isso no bd?

Ao invés de fazer a exclusão “física” do cliente (Delete from…), você cria uma coluna na tabela indicando se está ativo ou inativo, por exemplo.

Ao consultar os agendamentos você lê o valor dessa flag.
Se tiver como inativo, você coloca o texto excluído.

Isso impacta em todas as partes do sistema que lidam com cliente.
Por exemplo, ao procurar um cliente para efetuar um novo agendamento, você provavelmente não vai querer listar os excluídos.

Outra consequência dessa chamada exclusão “lógica” costuma ser a volta de clientes excluídos.
O usuário procura um cliente para fazer cadastro e não acha (está com flag inativo).
Na hora de cadastrar novamente, ele recebe um erro de CPF duplicado, por exemplo.
É importante pensar nessas situações nesse tipo de design.

[quote=djJoe]
Vi um soft que tinha uma tela de clientes e outra de agendamento e, ao excluir um cliente não era excluído o agendamento, era adicionado a palavra “excluido” junto ao nome do cliente.
Alguém tem uma ideia de como fazer isso no bd? [/quote]Eu imagino que o cliente deva ter apenas um status. O deletar deve ser o campo status = “removido” ou coisa do tipo.

Pois é amigos, eu queria fazer algo parecido.
Tenho uma tabela cliente e outra com as contas do mesmo, queria que ao excluir o cliente não deletasse as contas setava apenas para inativo. Aí se retornassem a cadastrar o mesmo cliente ocorreria um erro pois o cpf e nome são unique. Ficaria um pouco bagunçado não?

[quote=djJoe]Pois é amigos, eu queria fazer algo parecido.
Tenho uma tabela cliente e outra com as contas do mesmo, queria que ao excluir o cliente não deletasse as contas setava apenas para inativo. Aí se retornassem a cadastrar o mesmo cliente ocorreria um erro pois o cpf e nome são unique. Ficaria um pouco bagunçado não?[/quote]Nesse sistema que você viu, oq aconteceria caso alguém tentasse cadastrar um cara que fosse “excluido”?

Caso a pessoa tentasse cadastrar alguém que fosse excluído, pq naõ apenas reativa a pessoa?

Fiz testes, fiz um cadastro completo e em seguida fiz um agendamento, exclui e na agenda ficou: “cliente (excluido29)”. Esse 29 é a contagem de quantos clientes já foram excluídos, voltei para a tela de clientes e recadastrei com os mesmo dados e não gerou nenhum erro, mas na agenda ainda continuou como excluído.
Junto ao programa veio um script hsql, visualizei ( só não sei se posso postar, acho que não) e realmente tem um campo boolean se ativo ou não e apenas um campo unique que é o nome, na tabela agenda tem uma referencia para o id da tabela clientes.