Ja och nej :-)
I båda fallen är åtkomsten serialiserad (förutsatt att du använder en transaktionsmotor som InnoDB) eftersom de träffar samma rad, så de kommer inte att störa varandra. Med andra ord, påståendena är atomär.
Men antalet rader som påverkas beror faktiskt på din konfigurationsuppsättning när du öppnar anslutningen. sidan för mysql_affected_rows() har detta att säga (min fetstil):
Och från mysql_real_connect-sidan :
Så när det gäller vad som händer med CLIENT_FOUND_ROWS
konfigureras, de berörda raderna för:
UPDATE T1 SET C1 = 'dirty' WHERE id = 1
har inget att göra med om data ändras, bara de rader som matchade. Detta skulle vara 1 för båda frågorna.
Å andra sidan, om CLIENT_FOUND_ROWS
var inte inställd, skulle den andra frågan faktiskt inte ändra raden (eftersom den redan är fylld med "smutsig") och skulle ha ett radantal på noll.
Om du ville ha samma beteende oavsett den inställningen (visar bara ändringar) kan du använda något som:
UPDATE T1 SET C1 = 'dirty' WHERE id = 1 AND C1 <> 'dirty'