Delphi 7 SQL Server Express 2005

Delphi

29/11/2006

Olá!
Se você puder me ajudar numa dúvida sobre trigger, eu ficarei muito agradecida!

Eu criei uma aplicação delphi 7 + SQL Server Express 2005
Utilizo componentes ADO e ClientDataSet.
Tenho uma tabela de cliente e uma tabela de pedido.
Criei uma trigger para a tabela cliente que exclui todos os pedidos do cliente excluido:

create trigger ExclusaoCliente
on Cliente for delete
as
delete from Pedido
where Id_Cliente in (select Id_Cliente from deleted)
GO

Quando clico no botão excluir para deletar o cliente e o cliente tem apenas um pedido, a tabela do banco de dados é
atualizada, mas quando o cliente tem mais de um pedido, ocorre o seguinte erro no applyUpdates:
´Update affects more than 1 record´
Quando eu crio uma new Query para excluir todos os pedidos de um cliente(diretamente do banco de dados, isto é, fora da
aplicação Delphi) esse problema não ocorre.
O que está errado?

Obrigada pela atenção.
Até mais amigo(a)!


Athena

Athena

Curtidas 0

Respostas

Athena

Athena

29/11/2006

Olha só, descobri qual era o problema:
Quando eu criei minha primeira trigger(semana passada) eu copiei de uma apostila e quando se cria uma nova trigger existe uns códigos existentes, pois é, aí foi meu erro: Eu apaguei tudo e coloquei só o código do exemplo da apostila.
Então agora pouco dei um New Trigger e comecei a ler os códigos preexistente com comentários em inglês. Me atentei para este:

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

Não entendi direito o que quer dizer acima mas achei que tinha alguma coisa haver com prevenção de erros quando a consulta resulta em conjuntos de resultados.
Então ficou assim:

create trigger ExclusaoCliente
on Cliente for delete
AS
BEGIN
SET NOCOUNT ON;
delete from Pedido
where Id_Cliente in (select Id_Cliente from deleted)
END

E agora funcionou!


GOSTEI 0
POSTAR