Having done a bit of research it would appear that you cannot STOP a row from being inserted unless it is inserting invalid values. Therefore the only way to stop a record from being put in is to alter a NEW.value to NULL and then insert the NULL value into a non-null column. This best done with the primary key.
Bear in mind depending on how your MySQL server is set up it might try and truncate a value to it's nearest available possibility. With strict mode off if you are inserting a single row at a time you will find it fails (as you want it to), however on multi-inserts it will default the value to the nearest valid option. In strict mode this doesn't matter as it will fails for multi-inserts and single inserts.
I'm not 100% on how triggers deal with multi-inserts as opposed to single-inserts, but it's something you can try out to get your result.