O gatilho de atualização do SQLite altera todas as linhas da tabela

Problema: um gatilho de atualização possível mais simples grava um novo valor em todas as linhas da tabela, em vez de apenas na linha que está sendo atualizada. Aqui está a tabela:

[nomes]

id INTEGER PRIMARY KEY
name TEXT
len INTEGER

Agora eu quero criar gatilhos para atualizar 'len' com o comprimento de 'name'. Esse gatilho INSERT parece estar fazendo o trabalho corretamente:

CREATE TRIGGER 'namelen' AFTER INSERT ON 'names'
BEGIN
UPDATE 'names' SET len = length(NEW.name) WHERE (id=NEW.id);
END;

Os problemas começam quando adiciono um gatilho UPDATE semelhante:

CREATE TRIGGER 'namelenupd' AFTER UPDATE ON 'names'
BEGIN
UPDATE 'names' SET len = length(NEW.name) WHERE (OLD.id=NEW.id);
END;

O gatilho de atualização grava o novo tamanho emtodas as linhas da tabela, apesar da cláusula WHERE. Por exemplo, se eu disser

UPDATE 'names' SET name='foo' where id=1;

então o valor de 'len' passa a 3 paratodas as linhas da mesa. Eu olhei para exemplos de acionadores sqlite e não consigo ver meu erro. O que mais devo fazer para garantir que o gatilho atualize a coluna 'len' nas linhas que são realmente atualizadas?

questionAnswers(2)

yourAnswerToTheQuestion