Fórum Delphi 7 SQL Server Express 2005 #333929
29/11/2006
0
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)!
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
Curtir tópico
+ 0
Responder
Posts
30/11/2006
Athena
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!
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!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)