Trigger doesn't run when value of a column changes from null to 1
Change the if condition to:

if (new.col1 != old.col1) or ( new.col1 is not null and old.col1 is null )
                          or ( old.col1 is not null and new.col1 is null )


That should solve your problem. The original code didn't work correctly as you can't  test for equality with a NULL value - you have to use IS NULL or IS NOT NULL.

MySQL has also a "null-safe equals" operator: &lt;=&gt; which can be used here to make the above condition simpler (and still equivalent):

if not (new.col1 &lt;=&gt; old.col1)