Risolto:

Il codice generato in automatico è il seguente (riporto solo quello per la modifica, ma è tutto uguale anche per la altre operazioni):

Codice PHP:
UpdateCommand="UPDATE [tipologia_lavoro] 
SET
 [tipologia] = @tipologia, [descrizione] = @descrizione 
WHERE 
[cod] = @original_cod AND [tipologia] = @original_tipologia AND [descrizione] = @original_descrizione"

come potete vedere nella clausola WHERE sono presenti tutti i campi della tabella. Quando li trovava = null la query non funzionava. Essendo il campo cod univoco, ho lasciato solamente quello nel WHERE e ora pare funzionare tutto correttamente.