DeleteSQL... Poderiam ajudar-me ?

Firebird

17/10/2003

Estou Utilizando IBDataSet.

Na opção DeleteSQL estou usando :

DELETE From Acessos
WHERE
( CodUsu = :OLD_CodUsu )

Isto funciona bem para deletar apenas o registro no qual estou posicionado no momento. Meu problema é o seguinte:
Ao excluir um determinado usuário, tenho que excluir todos os acessos que o mesmo tinha direito, ou seja na tabela Acessos preciso deletar todos os registros que contenham o codigo desse usuario.
Exemplo.

DELETE From Acessos
Where
( CodUsu LIKE ´¬´+CodUsu+´¬´ )

Estou modificando a propriedade DeleteSQL em modo de execução só que está dando erro..

Desde já gostaria que alguém pudesse dar alguma opnião sobre o assunto.

Desde já agradeço.
Um Abraço.


M_gab

M_gab

Curtidas 0

Respostas

Afarias

Afarias

17/10/2003

|DELETE From Acessos WHERE ( CodUsu = :OLD_CodUsu )
|Isto funciona bem para deletar apenas o registro no qual estou
|posicionado no momento.

pois é... é pra isso exatamente q serve esta propriedade PARA EXCLUIR APENAS O REGISTRO ´CORRENTE´ -- só pode excluir sempre 1 registro!


|Ao excluir um determinado usuário, tenho que excluir todos os acessos
|que o mesmo tinha direito, ou seja na tabela Acessos preciso deletar
|todos os registros que contenham o codigo desse usuario.

vc podia usar uma constraint (ON DELETE CASCADE) ou uma trigger (AFTER DELETE) para este fim.


|Exemplo.
|DELETE From Acessos Where ( CodUsu LIKE ´¬´+CodUsu+´¬´ )

não use LIKE nesse tipo de comando!! principalmente com 2 ´¬´ -- isso faz com q o banco não possa usar um índice e ai suas operações ficam lentas...


|Estou modificando a propriedade DeleteSQL em modo de execução só
|que está dando erro..

ISSO não está correto!!

Se vc quer executar um comando SQL como um processo no banco de dados use um componente IBSQL ou IBQuery.

A propriedade DELETESQL do IBDataSet é apenas para q vc possa definir o q o DataSet deve fazer quando vc chamar DELETE na sua consulta SQL.


T+


GOSTEI 0
POSTAR