Inativar dados existentes !

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Japones
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 08 Abr 2014 11:23 am

Boa tarde Galera !
Estou com uma dúvida quanto a Inativar dados já existentes .
Tenho uma aplicação de movimentos já com seu fechamento feito ,ou seja, foi Commitada !
Eu preciso fazer uma reabertura da mesma mas com seus dados Inativos , detalhe que não posso deletar do banco .
Quem puder ajudar agradeço !
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Japones,

Bem vindo a forum GLUFKE.

Pelo que pude entender, você deseja manter estes registros na base, mas gostaria de sinalizar os mesmos como inativos.

Uma coisa que você poderia fazer seria criar uma coluna de auditoria, indicando a "exclusão lógica" do registro.

Ex:

Tenho uma tabela com a seguinte estrutura:
Tabela TB_ALUNO
ID_ALUNO NUMBER(12) NOT NULL,
NO_ALUNO VARCHAR2(60) NOT NULL
Você poderia neste caso criar uma terceira coluna de "exclusão lógica". Se ela estivesse populada, significaria que o registro se encontra inativo:
Tabela TB_ALUNO
ID_ALUNO NUMBER(12) NOT NULL,
NO_ALUNO VARCHAR2(60) NOT NULL
DT_EXCLUSAO DATE NULL
Só que você precisaria rever todas as queries de sua aplicação, filtrando os registros ativos, como poe exemplo:

Selecionar tudo

SELECT ID_ALUNO,NO_ALUNO FROM TB_ALUNO WHERE DT_EXCLUSAO IS NOT NULL
Na teoria, para "deletar logicamente" o registro na tabela, você precisaria fazer um UPDATE do tipo:

Selecionar tudo

UPDATE TB_ALUNO SET DT_EXCLUSAO = SYSDATE WHERE ID_ALUNO = <numero>
Para evitar exclusão acidental de registros pelo DELETE, você precisaria criar uma TRIGGER para esta tabela, que efetuaria o UPDATE da coluna DH_EXCO da tabela toda a vez que um comando DELETE fosse acionado.

Abraços,

Sergio Coutinho
Responder
  • Informação