I have a table in SQL Server that has a PK (ID) and another (logical) primary key made by a couple of other columns (although there is no UNIQUE constraint on that)
ID
Rather than writing a complex WHERE clause or IF statement, I usually just wrap the whole thing in a transaction and check @@ROWCOUNT:
BEGIN TRAN UPDATE PERSON SET AGE = 43 WHERE NAME = 'XX' AND SURNAME = 'YYY' IF @@ROWCOUNT > 1 ROLLBACK TRAN ELSE COMMIT TRAN