Denied updating a field that is modified within a BEFORE UPDATE TRIGGER
Your logic is inverted.  You are setting synced to 0 if either column is not changed.  The correct expression:

IF 
    NOT(NEW.FirstName &lt;=&gt; OLD.FirstName) OR
    NOT(NEW.LastName &lt;=&gt; OLD.LastName)
    THEN


The &lt;=&gt; operator is an equality comparison that considers nulls to be equivalent.