Imagine a seguinte tabela:
id | nome | família ---+------+-------- 0 | João | ferreiro 1 | Maria | invernos 2 | João | Corça
e agora a seguinte afirmação:
UPDATE t SET name = 'John' WHERE id = 0;
Na verdade, essa declaração não atualizaria nada – pois reflete o que já existe. Agora todos os blogs, manuais e whatsnots disseram para verificar SQL%ROWCOUNT
o número de linhas atualizadas. Fazer isso retorna 1
( linhas afetadasWHERE
– ou seja, aquelas com as quais a cláusula correspondeu). Vamos a outro:
UPDATE t SET family = 'Smith' WHERE name = 'John';
De fato, isso só mudaria a linha com id=2, então eu quero algo informando "1 linha atualizada" - mas SQL%ROWCOUNT
nos dá 2
(novamente, linhas afetadas ).
Então aqui vem a pergunta final: O que dá o número de linhas alteradas ?