Como deletar duas tabelas que nao tem referencia?

Firebird

11/08/2007

Pessoal as duas tabelas nao possui referencia PK---FK, mais preciso deletar e o campo ID_SAL da tabela salario_M eh o mesmo id_gerarformual da tabela formulas

Tentei assim
try //começa o bloco do try/except
    dm.qFunc.Close;
    dm.qFunc.Sql.Add(´Delete from salario_m S where S.id_sal ´
               +´in(select F.id_gerarformula from formulas F ´
               +´where (S.id_sal = :pExclui))´);
    dm.qFunc.ParamByName(´pExclui´).AsInteger:=vExclui;
    dm.qFunc.ExecSql;
    //---tabela filha
    dm.zTFormula.Close;
    dm.zTFormula.Sql.Add(´Delete from Formulas ´
                     +´where F.id_gerarFormula = :pExclui)´);
    dm.zTFormula.ParamByName(´pExclui´).AsInteger:=vExclui;
    dm.zTFormula.ExecSql;
    dm.qFunc.Refresh; //faz um refresh na tabela para atualizar os dados
    dm.zTFormula.Refresh;
  except
    on Exc:Exception do
    begin
       ShowMessage(´Ocorreu um erro na tentantiva de Excluir os registro: ´ + Exc.Message);
       DM.zDB.Rollback;
       dm.qFunc.Refresh; //faz um refresh na tabela para atualizar os dados
    end;
  end; //final do bloco do try/except
Mais nao funciona, entao como faço para deletar em cascata desta forma no query, pois nao consegui fazer referencia entre estas tabelas, talvez pq ja tem dados gravados.


Adriano_servitec

Adriano_servitec

Curtidas 0

Respostas

Adriano_servitec

Adriano_servitec

11/08/2007

Olhem como estou querendo fazer a FK:
ALTER TABLE formulas
ADD CONSTRAINT fk_formulas_2
FOREIGN KEY(id_gerarformula) REFERENCES salario_m(id_sal)
ON DELETE CASCADE ON UPDATE CASCADE;


Soh que nao consigo aponta erro
[b:5bfdbf5a2c][color=green:5bfdbf5a2c]Cannot commit transaction:[/color:5bfdbf5a2c]
[color=red:5bfdbf5a2c]violation of FOREIGN KEY constraint ´´.
violation of FOREIGN KEY constraint ´PK_SALARIO_M´ on table ´SALARIO_M´.
Foreign key reference target does not exist.[/color:5bfdbf5a2c][/b:5bfdbf5a2c]


GOSTEI 0
Adriano_servitec

Adriano_servitec

11/08/2007

Corrigindo o post

Pessoal cheguei a criar a [b:53efa3727a]FK[/b:53efa3727a] na tabela [b:53efa3727a][u:53efa3727a]Formulas[/u:53efa3727a][/b:53efa3727a]
Mais se eu deletar algum funcionario na tabela [b:53efa3727a][u:53efa3727a]salario_m[/u:53efa3727a][/b:53efa3727a] aponta o seguinte erro
(IBExpert)
[b:53efa3727a]
Error Message: ---------------------------------------- Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values. violation of PRIMARY or UNIQUE KEY constraint ´PK_FORMULAS´ on table ´FORMULAS´. At trigger ´FORMULAS_BD0´ At trigger ´CHECK_87´.
[/b:53efa3727a]

A chave esta criado assim (Hj consegui fazer funcionar)
ALTER TABLE formulas
ADD CONSTRAINT fk_formulas_2
FOREIGN KEY(id_gerarformula) REFERENCES salario_m(id_sal)
ON DELETE CASCADE ON UPDATE CASCADE;
E aparece a chave FK na tabela formulas, mais nao estou conseguindo deletar em cascata, ou seja se eu deletar algum funcionario que tenha referencia com a tabela formulas aponta o erro.


GOSTEI 0
POSTAR