Usuário com melhor resposta
criação de um LOG

Pergunta
-
Pessoal, tenho procedures que fazem update em 2 tabelas.
O primeiro passo foi construí-las ( urgencia definido por meus superiores p entregar num prazo curto )
Agora estou vendo a necessidade de "construir" um controle desses updates...tipo...se nao atualizar nenhum registro, preciso saber disso. Porque existe um cursor q é varrido e consequentemente todas as cidades encontradas nele terao de ser atualizadas na "tabela fim" mas ja reparei q algumas vezes isso nao ocorre, por motivos que nao cabe expor aqui agora...
A solucao que pensei foi criar uma tabela de log de transacoes e fazer insert nas mesmas toda vez q fosse feito um update...é isso mesmo? é a melhor coisa a se fazer?
obrigado
Respostas
-
Olá Esquerdo,
Toda vez que você executa um comando de update, select, insert ou delete há uma quantidade de linhas afetadas. Se você por exemplo inserir uma linha haverá uma linha afetada. Se você atualizar 50 linhas haverá 50 linhas afetadas e assim por diante. Você pode capturar essa informação com o @@rowcount. Ex:
Code Snippetdeclare
@t table (codigo int)-- Insere uma linha
insert
into @t values (1)-- Retorna uma linha afetada
SELECT
@@rowcount-- Insere outra linha
insert
into @t values (2)-- Retorna uma linha afetata
SELECT
@@rowcount-- Exclui todas as linhas
DELETE
FROM @t-- Retorna duas linhas afetadas
SELECT
@@rowcount[ ]s,
Gustavo
-
Todas as Respostas
-
-
-
Olá Esquerdo,
Toda vez que você executa um comando de update, select, insert ou delete há uma quantidade de linhas afetadas. Se você por exemplo inserir uma linha haverá uma linha afetada. Se você atualizar 50 linhas haverá 50 linhas afetadas e assim por diante. Você pode capturar essa informação com o @@rowcount. Ex:
Code Snippetdeclare
@t table (codigo int)-- Insere uma linha
insert
into @t values (1)-- Retorna uma linha afetada
SELECT
@@rowcount-- Insere outra linha
insert
into @t values (2)-- Retorna uma linha afetata
SELECT
@@rowcount-- Exclui todas as linhas
DELETE
FROM @t-- Retorna duas linhas afetadas
SELECT
@@rowcount[ ]s,
Gustavo
-
-
Entendi Gustavo, obrigado pela resposta.
Mas a minha procedure esta montada da seguinte forma...
Tenho um select que é carregado dentro de um cursor.
Nisso eu varro o cursor e com as informacoes retornadas no select eu vou atualizando uma tabela.
Dessa forma nao vejo como saber se algum dos registros nao foi atualizado.
Ressalto que se o select retornar 10 registros, o update sera feito em 10 liinhas tambem.
-
-