Fórum Deletar dados com segurança usando Stored Procedures! #43665
12/04/2004
0
olá amigos...
tenho a seguinte dúvida:
gostaria de, ao excluir um registro, esse mesmo fosse gravado em uma outra tabela (TABLE_EXCLUIDOS) como forma de backup, não para restauração, e sim para consulta.
O problema é o seguinte:
- Para cada produto acabado, eu tenho N materias-primas.
- A exclusão é feita pela matéria-prima e não pelo produto.
Como devo prosseguir para ao deletar um produto, e este ser gravado na tabela de excluídos?
Exemplo:
[b:49f0c10a98]PRODUTO M.P 1 M.P 2 M.P N
PK-019 999 888 NNN[/b:49f0c10a98]
quando o usuário entrar com o codigo da matéria prima, a procedure varre as tabelas pré-definidas comparando a matéria-prima, na ocorrência da mesma, ele faz o backup na tabela de excluidos e deleta o produto da tabela original...
entenderam ou eu compliquei tudo?
Quem puder me ajudar, serei eternamente grato!
Uso D7 e IBX!
tenho a seguinte dúvida:
gostaria de, ao excluir um registro, esse mesmo fosse gravado em uma outra tabela (TABLE_EXCLUIDOS) como forma de backup, não para restauração, e sim para consulta.
O problema é o seguinte:
- Para cada produto acabado, eu tenho N materias-primas.
- A exclusão é feita pela matéria-prima e não pelo produto.
Como devo prosseguir para ao deletar um produto, e este ser gravado na tabela de excluídos?
Exemplo:
[b:49f0c10a98]PRODUTO M.P 1 M.P 2 M.P N
PK-019 999 888 NNN[/b:49f0c10a98]
quando o usuário entrar com o codigo da matéria prima, a procedure varre as tabelas pré-definidas comparando a matéria-prima, na ocorrência da mesma, ele faz o backup na tabela de excluidos e deleta o produto da tabela original...
entenderam ou eu compliquei tudo?
Quem puder me ajudar, serei eternamente grato!
Uso D7 e IBX!
Anarchybra
Curtir tópico
+ 0
Responder
Posts
13/04/2004
Anarchybra
esta é minha linha de raciocínio... sei que está errado, mas acho que é por aqui:
[b:b2f9d42bcf]CREATE PROCEDURE SP_DELETE_BACKUP_FORMULAS
(
COD_PRODUTO VARCHAR(10)
)
AS
DECLARE VARIABLE COD_FORMULA VARCHAR(10); /* armazena a fórmula excluída */
DECLARE VARIABLE DATA TIMESTAMP; /* armazena a data de exclusão */
BEGIN
WHILE (COMP1.COD_PRODUTO = :COD_PRODUTO) DO
BEGIN
FOR SELECT COMP1.COD_PRODUTO, COMP2.COD_PRODUTO
FROM COMPOSICAO COMP1, COMP_TEMP COMP2
WHERE (COMP1.COD_PRODUTO = :COD_PRODUTO)
INTO :COD_FORMULA, :DATA DO
BEGIN
INSERT INTO BACKUP_EXCLUIDOS ( COD_FORMULA, DATA)
VALUES (:COD_FORMULA, :DATA);
DELETE FROM COMPOSICAO WHERE COD_PRODUTO = :COD_PRODUTO
DELETE FROM COMP_TEMP WHERE COD_PRODUTO = :COD_PRODUTO
SUSPEND;
END
END
END
^[/b:b2f9d42bcf]
END
^[/b]
[b:b2f9d42bcf]CREATE PROCEDURE SP_DELETE_BACKUP_FORMULAS
(
COD_PRODUTO VARCHAR(10)
)
AS
DECLARE VARIABLE COD_FORMULA VARCHAR(10); /* armazena a fórmula excluída */
DECLARE VARIABLE DATA TIMESTAMP; /* armazena a data de exclusão */
BEGIN
WHILE (COMP1.COD_PRODUTO = :COD_PRODUTO) DO
BEGIN
FOR SELECT COMP1.COD_PRODUTO, COMP2.COD_PRODUTO
FROM COMPOSICAO COMP1, COMP_TEMP COMP2
WHERE (COMP1.COD_PRODUTO = :COD_PRODUTO)
INTO :COD_FORMULA, :DATA DO
BEGIN
INSERT INTO BACKUP_EXCLUIDOS ( COD_FORMULA, DATA)
VALUES (:COD_FORMULA, :DATA);
DELETE FROM COMPOSICAO WHERE COD_PRODUTO = :COD_PRODUTO
DELETE FROM COMP_TEMP WHERE COD_PRODUTO = :COD_PRODUTO
SUSPEND;
END
END
END
^[/b:b2f9d42bcf]
END
^[/b]
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)