Using DBD::CSV 0.21, it works iff i change the UPDATE's to be "WHERE NAME=?" (otherwise i get a "unknown column" error)-- apparently it is case sensitive ... dunno if this is by design or a bug (taking a fast glance at SQL::Statement's source, though, it looks like there's support in there for case-insensitivity)..
Any additional information if you turn RaiseError on w/$dbh->{'RaiseError'} = 1; (or in DBI->connect call)?
I tried setting NAME to caps. That made no difference. Swapping the two prepares round makes no difference, and neither does swapping the two executes round.